The package rpms/ghdl.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/ghdl.git/commit/?id=a6190ce3bb7cb...
https://src.fedoraproject.org/cgit/rpms/ghdl.git/commit/?id=ceca494e521ea....
Change:
+%ifarch ppc64le %{mips} riscv64
+%ifarch ppc64le %{mips} riscv64
Thanks.
Full change:
============
commit 24f45c104168cb7d89507ea7a23a3265b3efb5e3
Merge: 8e907a3 d46fe9a
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Fri Mar 1 17:36:35 2019 +0100
Merge remote-tracking branch 'origin/master' into f29
diff --cc ghdl.spec
index 2d0e540,195bf2f..a569cad
--- a/ghdl.spec
+++ b/ghdl.spec
@@@ -112,9 -112,8 +112,8 @@@
Summary: A VHDL simulator, using the GCC technology
Name: ghdl
Version: %{ghdlver}
-Release: 2%{ghdlgitrev}.0%{?dist}
+Release: 1%{ghdlgitrev}.1%{?dist}
License: GPLv2+ and GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
LGPLv2+ and BSD
- Group: Development/Languages
URL:
http://ghdl.free.fr/
# The source for this package was pulled from upstream's vcs. Use the
# following commands to generate the tarball:
@@@ -859,6 -844,12 +844,9 @@@ pop
%endif
%changelog
-* Fri Mar 01 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-2.20190301gita62344e.0
++* Fri Mar 01 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190301gita62344e.0
+ - update to 0.35dev (20190301gita62344e)
+
-* Thu Jan 31 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.35dev-2.20190129git3c30e3b.1
-- Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
-
* Wed Jan 30 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190129git3c30e3b.1
- update base gcc to 8.2.1
commit d46fe9a3a917321d3fdcedbc6660b9e10383d3dd
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Fri Mar 1 14:00:29 2019 +0100
handle LLVM8
diff --git a/ghdl-llvm8.patch b/ghdl-llvm8.patch
new file mode 100644
index 0000000..15ae23d
--- /dev/null
+++ b/ghdl-llvm8.patch
@@ -0,0 +1,10 @@
+--- ghdl/configure.llvm 2019-03-01 13:57:11.734683842 +0100
++++ ghdl/configure 2019-03-01 13:57:44.980054706 +0100
+@@ -250,6 +250,7 @@
+ check_version 5.0 $llvm_version ||
+ check_version 6.0 $llvm_version ||
+ check_version 7.0 $llvm_version ||
++ check_version 8.0 $llvm_version ||
+ false; then
+ echo "Debugging is not enabled with llvm $llvm_version"
+ llvm_be=llvm4-nodebug
diff --git a/ghdl.spec b/ghdl.spec
index 2bab0ff..195bf2f 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -159,13 +159,13 @@ Patch1002: nvptx-tools-glibc.patch
# tar cvJf ghdl%{ghdlgitrev}.tar.bz2 --exclude-vcs ghdl
Source100: ghdl%{ghdlgitrev}.tar.bz2
Patch100: ghdl-llvmflags.patch
+Patch101: ghdl-llvm8.patch
# Both following patches have been sent to upstream mailing list:
# From: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
# To: ghdl-discuss(a)gna.org
# Date: Thu, 02 Apr 2009 15:36:00 +0200
#
https://gna.org/bugs/index.php?13390
Patch106: ghdl-ppc64abort.patch
-#
http://gcc.gnu.org/ml/gcc-patches/2012-10/msg02505.html
Patch200: upf.patch
Requires: gcc
@@ -405,6 +405,7 @@ rm -f gcc/testsuite/go.test/test/chan/goroutines.go
%patch200 -p0 -b .upf~
%patch100 -p0 -b .llvmflags~
+%patch101 -p0 -b .llvm8~
%if %{without gnatwae}
perl -i -pe 's,-gnatwae,,' ghdl/dist/gcc/Make-lang.in
commit 9d10aac66c57bc0c9226ac5b36b194c1031aedbc
Merge: a21bede 67d40f3
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Fri Mar 1 13:20:19 2019 +0100
Merge branch 'master' of
ssh://pkgs.fedoraproject.org/rpms/ghdl
diff --cc ghdl.spec
index 86368dc,5518272..2bab0ff
--- a/ghdl.spec
+++ b/ghdl.spec
@@@ -112,7 -112,7 +112,7 @@@
Summary: A VHDL simulator, using the GCC technology
Name: ghdl
Version: %{ghdlver}
- Release: 1%{ghdlgitrev}.0%{?dist}
-Release: 2%{ghdlgitrev}.1%{?dist}
++Release: 2%{ghdlgitrev}.0%{?dist}
License: GPLv2+ and GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
LGPLv2+ and BSD
URL:
http://ghdl.free.fr/
# The source for this package was pulled from upstream's vcs. Use the
@@@ -843,9 -843,9 +843,12 @@@ pop
%endif
%changelog
- * Wed Jan 30 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190301gita62344e.0
++* Fri Mar 01 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-2.20190301gita62344e.0
+- update to 0.35dev (20190301gita62344e)
+
+ * Thu Jan 31 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.35dev-2.20190129git3c30e3b.1
+ - Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
* Wed Jan 30 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190129git3c30e3b.1
- update base gcc to 8.2.1
commit a21bede55febbf2fa0fa39624c1e375b3feac618
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Fri Mar 1 13:17:49 2019 +0100
update to 20190301gita62344e
diff --git a/ghdl.spec b/ghdl.spec
index 28fab7d..86368dc 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -1,5 +1,5 @@
%global ghdlver 0.35dev
-%global ghdlgitrev .20190129git3c30e3b
+%global ghdlgitrev .20190301gita62344e
%ifarch %{ix86} x86_64
%bcond_without mcode
@@ -112,7 +112,7 @@
Summary: A VHDL simulator, using the GCC technology
Name: ghdl
Version: %{ghdlver}
-Release: 1%{ghdlgitrev}.1%{?dist}
+Release: 1%{ghdlgitrev}.0%{?dist}
License: GPLv2+ and GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
LGPLv2+ and BSD
URL:
http://ghdl.free.fr/
# The source for this package was pulled from upstream's vcs. Use the
@@ -155,7 +155,7 @@ Patch1002: nvptx-tools-glibc.patch
# HOWTO create source files from ghdl git at
github.com
# check out the git repo
-# git clone
https://github.com/tgingold/ghdl.git
+# git clone
https://github.com/ghdl/ghdl.git
# tar cvJf ghdl%{ghdlgitrev}.tar.bz2 --exclude-vcs ghdl
Source100: ghdl%{ghdlgitrev}.tar.bz2
Patch100: ghdl-llvmflags.patch
@@ -843,6 +843,9 @@ popd
%endif
%changelog
+* Wed Jan 30 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190301gita62344e.0
+- update to 0.35dev (20190301gita62344e)
+
* Wed Jan 30 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190129git3c30e3b.1
- update base gcc to 8.2.1
diff --git a/sources b/sources
index cb0d743..0dfc904 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
SHA512 (gcc-8.2.1-20190109.tar.xz) =
d699b52baa2c54a71f2fef2dd77701baa836737975938d67fb532f1a54638b1442fc04b560fd74e66b44195e4de9ce485100b9bdbac569e4c3abad053a96bc33
SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) =
94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04
SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) =
a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1
-SHA512 (ghdl.20190129git3c30e3b.tar.bz2) =
79573bca36ab66e01bdff11adbdfbaddfe5a6db59b90e6cea95c7d99c27ecd8ea67e1d18deef6486687c79ee459ae65b8dd5f6485ff1fc968fd36d87cf9b4439
+SHA512 (ghdl.20190301gita62344e.tar.bz2) =
b51f0e7398d5282d0a12f0d7e885da85aa0da6ab6a83cdc73e192dde26dbb7b83411aa0478eb0e71401e1361347d61d03dc7795b138a79fb6fccdbfd22874ce5
commit 67d40f3b6d125bd1b4f77c7611a9d860bdcbb683
Author: Fedora Release Engineering <releng(a)fedoraproject.org>
Date: Thu Jan 31 22:18:22 2019 +0000
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng(a)fedoraproject.org>
diff --git a/ghdl.spec b/ghdl.spec
index 28fab7d..5518272 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -112,7 +112,7 @@
Summary: A VHDL simulator, using the GCC technology
Name: ghdl
Version: %{ghdlver}
-Release: 1%{ghdlgitrev}.1%{?dist}
+Release: 2%{ghdlgitrev}.1%{?dist}
License: GPLv2+ and GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
LGPLv2+ and BSD
URL:
http://ghdl.free.fr/
# The source for this package was pulled from upstream's vcs. Use the
@@ -843,6 +843,9 @@ popd
%endif
%changelog
+* Thu Jan 31 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.35dev-2.20190129git3c30e3b.1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
* Wed Jan 30 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190129git3c30e3b.1
- update base gcc to 8.2.1
commit 8e907a31dfab8844d80470f0059aef67e65b425c
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Wed Jan 30 14:59:49 2019 +0100
add changelog entry
diff --git a/ghdl.spec b/ghdl.spec
index fed13a5..2d0e540 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -859,7 +859,10 @@ popd
%endif
%changelog
-* Tue Jan 29 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-0.20190129git3c30e3b.0
+* Wed Jan 30 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190129git3c30e3b.1
+- update base gcc to 8.2.1
+
+* Tue Jan 29 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190129git3c30e3b.0
- update to 0.35dev (20190129git3c30e3b)
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.35dev-1.20180520git66bb071.0
commit fcc65b5a265730b6e1a98eeafd71d2f7515aa8c5
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Wed Jan 30 14:58:51 2019 +0100
add missing BR
diff --git a/ghdl.spec b/ghdl.spec
index b2f78ab..fed13a5 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -250,6 +250,7 @@ Requires: libgcc >= %{gcc_version}-%{release}
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
+BuildRequires: gcc-gnat
# for x86, we also build the mcode version; if on x86_64, we need some 32bit libraries
%if %{with llvm}
BuildRequires: libedit-devel
commit ff4b98ee8249ce71df27d9750d847ed92111485c
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 19:35:21 2019 +0100
fix requires
diff --git a/ghdl.spec b/ghdl.spec
index 2514eda..b2f78ab 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -112,7 +112,7 @@
Summary: A VHDL simulator, using the GCC technology
Name: ghdl
Version: %{ghdlver}
-Release: 1%{ghdlgitrev}.0%{?dist}
+Release: 1%{ghdlgitrev}.1%{?dist}
License: GPLv2+ and GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
LGPLv2+ and BSD
Group: Development/Languages
URL:
http://ghdl.free.fr/
@@ -245,8 +245,7 @@ Requires: binutils >= 2.31
%else
Requires: binutils >= 2.24
%endif
-Requires: libgcc >= %{version}-%{release}
-Requires: libgomp = %{version}-%{release}
+Requires: libgcc >= %{gcc_version}-%{release}
BuildRequires: autoconf
BuildRequires: automake
commit f71726c7d975f72b18368cb509a54225571dd749
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 19:27:16 2019 +0100
remove some superfluous man pages
diff --git a/ghdl.spec b/ghdl.spec
index 7e67771..2514eda 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -190,10 +190,7 @@ BuildRequires: binutils >= 2.31
%else
BuildRequires: binutils >= 2.24
%endif
-# While gcc doesn't include statically linked binaries, during testing
-# -static is used several times.
-BuildRequires: glibc-static
-BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
+BuildRequires: zlib-devel, gettext, bison, flex, sharutils
BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
BuildRequires: systemtap-sdt-devel >= 1.3
BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
@@ -355,7 +352,7 @@ that tracks signal updates and schedules processes.
%endif
%prep
-%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 100
+%setup -q -n gcc-%{gcc_version}-%{DATE} -a 1 -a 2 -a 100
%patch0 -p0 -b .hack~
%patch2 -p0 -b .i386-libgomp~
%patch3 -p0 -b .sparc-config-detection~
@@ -421,10 +418,6 @@ rm -f gcc/testsuite/go.test/test/chan/goroutines.go
perl -i -pe 's,-gnatwae,,' ghdl/dist/gcc/Make-lang.in
%endif
-pushd cloog-%{cloog_version}
-./autogen.sh
-popd
-
%ifarch %{ix86} x86_64
%if %{with mcode}
cp -r ghdl ghdl-mcode
@@ -794,7 +787,7 @@ pushd %{buildroot}
.%{_infodir}/{cpp,cppinternals,gcc,gccinstall,gccint}.info* \
.%{_infodir}/{libgomp,libquadmath}.info* \
.%{_datadir}/locale/*/LC_MESSAGES/{gcc,cpplib}.mo \
- .%{_mandir}/man1/{cpp,gcc,gcov}.1* \
+ .%{_mandir}/man1/{cpp,gcc,gcov,gcov-dump,gcov-tool}.1* \
.%{_mandir}/man7/{fsf-funding,gfdl,gpl}.7* \
.%{_prefix}/lib/libgcc_s.* \
.%{_prefix}/lib/libmudflap.* \
commit ceca494e521ea6ffc17004206be006ee18f2a091
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 18:50:18 2019 +0100
initial update to gcc8
diff --git a/cloog-0.18.1-ppc64le-config.patch b/cloog-0.18.1-ppc64le-config.patch
deleted file mode 100644
index a280e20..0000000
--- a/cloog-0.18.1-ppc64le-config.patch
+++ /dev/null
@@ -1,717 +0,0 @@
---- cloog-0.18.1/m4/libtool.m4.jj 2013-10-11 09:27:45.000000000 +0200
-+++ cloog-0.18.1/m4/libtool.m4 2014-04-11 18:24:56.607493726 +0200
-@@ -1312,7 +1312,7 @@ ia64-*-hpux*)
- rm -rf conftest*
- ;;
-
--x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
- s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
-@@ -1333,7 +1333,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
- ;;
- esac
- ;;
-- ppc64-*linux*|powerpc64-*linux*)
-+ powerpc64le-*linux*)
-+ LD="${LD-ld} -m elf32lppclinux"
-+ ;;
-+ powerpc64-*linux*)
- LD="${LD-ld} -m elf32ppclinux"
- ;;
- s390x-*linux*)
-@@ -1352,7 +1355,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
- x86_64-*linux*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
-- ppc*-*linux*|powerpc*-*linux*)
-+ powerpcle-*linux*)
-+ LD="${LD-ld} -m elf64lppc"
-+ ;;
-+ powerpc-*linux*)
- LD="${LD-ld} -m elf64ppc"
- ;;
- s390*-*linux*|s390*-*tpf*)
---- cloog-0.18.1/autoconf/config.sub.jj 2013-10-11 09:27:45.000000000 +0200
-+++ cloog-0.18.1/autoconf/config.sub 2014-04-11 18:24:56.608493721 +0200
-@@ -1,24 +1,18 @@
- #! /bin/sh
- # Configuration validation subroutine script.
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--# 2011, 2012 Free Software Foundation, Inc.
--
--timestamp='2012-04-18'
--
--# This file is (in principle) common to ALL GNU software.
--# The presence of a machine in this file suggests that SOME GNU software
--# can handle that machine. It does not imply ALL GNU software can.
--#
--# 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
--# the Free Software Foundation; either version 2 of the License, or
-+# Copyright 1992-2013 Free Software Foundation, Inc.
-+
-+timestamp='2013-10-01'
-+
-+# 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
-+# the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--# GNU General Public License for more details.
-+# This program is distributed in the hope that it will be useful, but
-+# WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, see <
http://www.gnu.org/licenses/>.
-@@ -26,11 +20,12 @@ timestamp='2012-04-18'
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
-+# the same distribution terms that you use for the rest of that
-+# program. This Exception is an additional permission under section 7
-+# of the GNU General Public License, version 3 ("GPLv3").
-
-
--# Please send patches to <config-patches(a)gnu.org>. Submit a context
--# diff and a properly formatted GNU ChangeLog entry.
-+# Please send patches with a ChangeLog entry to config-patches(a)gnu.org.
- #
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
-@@ -73,9 +68,7 @@ Report bugs and patches to <config-patch
- version="\
- GNU config.sub ($timestamp)
-
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
--2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
--Free Software Foundation, Inc.
-+Copyright 1992-2013 Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -123,7 +116,7 @@ esac
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
-@@ -156,7 +149,7 @@ case $os in
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-- -apple | -axis | -knuth | -cray | -microblaze)
-+ -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
-@@ -259,10 +252,12 @@ case $basic_machine in
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
-- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-- | be32 | be64 \
-+ | arc | arceb \
-+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-+ | avr | avr32 \
-+ | be32 | be64 \
- | bfin \
-- | c4x | clipper \
-+ | c4x | c8051 | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | epiphany \
- | fido | fr30 | frv \
-@@ -270,10 +265,11 @@ case $basic_machine in
- | hexagon \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
-+ | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
-- | maxq | mb | microblaze | mcore | mep | metag \
-+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
-@@ -291,16 +287,17 @@ case $basic_machine in
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
-+ | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
-- | nios | nios2 \
-+ | nios | nios2 | nios2eb | nios2el \
- | ns16k | ns32k \
- | open8 \
-- | or32 \
-+ | or1k | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pyramid \
-@@ -328,7 +325,7 @@ case $basic_machine in
- c6x)
- basic_machine=tic6x-unknown
- ;;
-- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
-+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
-@@ -370,13 +367,13 @@ case $basic_machine in
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
-- | clipper-* | craynv-* | cydra-* \
-+ | c8051-* | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-@@ -385,11 +382,13 @@ case $basic_machine in
- | hexagon-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
-+ | k1om-* \
- | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
-+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-+ | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
-@@ -407,12 +406,13 @@ case $basic_machine in
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-+ | mipsr5900-* | mipsr5900el-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nds32-* | nds32le-* | nds32be-* \
-- | nios-* | nios2-* \
-+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | open8-* \
- | orion-* \
-@@ -788,11 +788,15 @@ case $basic_machine in
- basic_machine=ns32k-utek
- os=-sysv
- ;;
-- microblaze)
-+ microblaze*)
- basic_machine=microblaze-xilinx
- ;;
-+ mingw64)
-+ basic_machine=x86_64-pc
-+ os=-mingw64
-+ ;;
- mingw32)
-- basic_machine=i386-pc
-+ basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
-@@ -828,7 +832,7 @@ case $basic_machine in
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- msys)
-- basic_machine=i386-pc
-+ basic_machine=i686-pc
- os=-msys
- ;;
- mvs)
-@@ -1019,7 +1023,11 @@ case $basic_machine in
- basic_machine=i586-unknown
- os=-pw32
- ;;
-- rdos)
-+ rdos | rdos64)
-+ basic_machine=x86_64-pc
-+ os=-rdos
-+ ;;
-+ rdos32)
- basic_machine=i386-pc
- os=-rdos
- ;;
-@@ -1346,21 +1354,21 @@ case $os in
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-- | -sym* | -kopensolaris* \
-+ | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-- | -openbsd* | -solidbsd* \
-+ | -bitrig* | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-- | -mingw32* | -linux-gnu* | -linux-android* \
-- | -linux-newlib* | -linux-uclibc* \
-+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-@@ -1492,9 +1500,6 @@ case $os in
- -aros*)
- os=-aros
- ;;
-- -kaos*)
-- os=-kaos
-- ;;
- -zvmoe)
- os=-zvmoe
- ;;
-@@ -1543,6 +1548,9 @@ case $basic_machine in
- c4x-* | tic4x-*)
- os=-coff
- ;;
-+ c8051-*)
-+ os=-elf
-+ ;;
- hexagon-*)
- os=-elf
- ;;
-@@ -1586,6 +1594,9 @@ case $basic_machine in
- mips*-*)
- os=-elf
- ;;
-+ or1k-*)
-+ os=-elf
-+ ;;
- or32-*)
- os=-coff
- ;;
---- cloog-0.18.1/autoconf/config.guess.jj 2013-10-11 09:27:45.000000000 +0200
-+++ cloog-0.18.1/autoconf/config.guess 2014-04-11 18:24:56.608493721 +0200
-@@ -1,14 +1,12 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--# 2011, 2012 Free Software Foundation, Inc.
-+# Copyright 1992-2013 Free Software Foundation, Inc.
-
--timestamp='2012-02-10'
-+timestamp='2013-06-10'
-
- # 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
--# the Free Software Foundation; either version 2 of the License, or
-+# the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful, but
-@@ -22,19 +20,17 @@ timestamp='2012-02-10'
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--
--# Originally written by Per Bothner. Please send patches (context
--# diff format) to <config-patches(a)gnu.org> and include a ChangeLog
--# entry.
-+# the same distribution terms that you use for the rest of that
-+# program. This Exception is an additional permission under section 7
-+# of the GNU General Public License, version 3 ("GPLv3").
- #
--# This script attempts to guess a canonical system name similar to
--# config.sub. If it succeeds, it prints the system name on stdout, and
--# exits with 0. Otherwise, it exits with 1.
-+# Originally written by Per Bothner.
- #
- # You can get the latest version of this script from:
- #
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.gu...
-+#
-+# Please send patches with a ChangeLog entry to config-patches(a)gnu.org.
-+
-
- me=`echo "$0" | sed -e 's,.*/,,'`
-
-@@ -54,9 +50,7 @@ version="\
- GNU config.guess ($timestamp)
-
- Originally written by Per Bothner.
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
--2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
--Free Software Foundation, Inc.
-+Copyright 1992-2013 Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` |
- UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
- UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-+case "${UNAME_SYSTEM}" in
-+Linux|GNU|GNU/*)
-+ # If the system lacks a compiler, then just pick glibc.
-+ # We could probably try harder.
-+ LIBC=gnu
-+
-+ eval $set_cc_for_build
-+ cat <<-EOF > $dummy.c
-+ #include <features.h>
-+ #if defined(__UCLIBC__)
-+ LIBC=uclibc
-+ #elif defined(__dietlibc__)
-+ LIBC=dietlibc
-+ #else
-+ LIBC=gnu
-+ #endif
-+ EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-+ ;;
-+esac
-+
- # Note: order is significant - the case branches are not exclusive.
-
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-@@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
-+ *:Bitrig:*:*)
-+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-+ exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-@@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
-- arm:riscos:*:*|arm:RISCOS:*:*)
-+ arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-@@ -801,6 +820,9 @@ EOF
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
-+ *:MINGW64*:*)
-+ echo ${UNAME_MACHINE}-pc-mingw64
-+ exit ;;
- *:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
-@@ -852,21 +874,21 @@ EOF
- exit ;;
- *:GNU:*:*)
- # the GNU system
-- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo
${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo
${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
-- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr
'[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr
'[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e
's/[-(].*//'`-${LIBC}
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- aarch64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- aarch64_be:Linux:*:*)
- UNAME_MACHINE=aarch64_be
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-@@ -879,59 +901,54 @@ EOF
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep -q ld.so.1
-- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ arc:Linux:*:* | arceb:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- arm*:Linux:*:*)
- eval $set_cc_for_build
- if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_EABI__
- then
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- else
- if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_PCS_VFP
- then
-- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
- else
-- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
- fi
- fi
- exit ;;
- avr32*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- cris:Linux:*:*)
-- echo ${UNAME_MACHINE}-axis-linux-gnu
-+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
- exit ;;
- crisv32:Linux:*:*)
-- echo ${UNAME_MACHINE}-axis-linux-gnu
-+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
- exit ;;
- frv:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- hexagon:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- i*86:Linux:*:*)
-- LIBC=gnu
-- eval $set_cc_for_build
-- sed 's/^ //' << EOF >$dummy.c
-- #ifdef __dietlibc__
-- LIBC=dietlibc
-- #endif
--EOF
-- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
- exit ;;
- ia64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- m32r*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- m68*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
-@@ -950,54 +967,63 @@ EOF
- #endif
- EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu";
exit; }
-+ test x"${CPU}" != x && { echo
"${CPU}-unknown-linux-${LIBC}"; exit; }
- ;;
-+ or1k:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
- or32:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- padre:Linux:*:*)
-- echo sparc-unknown-linux-gnu
-+ echo sparc-unknown-linux-${LIBC}
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
-- echo hppa64-unknown-linux-gnu
-+ echo hppa64-unknown-linux-${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2`
in
-- PA7*) echo hppa1.1-unknown-linux-gnu ;;
-- PA8*) echo hppa2.0-unknown-linux-gnu ;;
-- *) echo hppa-unknown-linux-gnu ;;
-+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-+ *) echo hppa-unknown-linux-${LIBC} ;;
- esac
- exit ;;
- ppc64:Linux:*:*)
-- echo powerpc64-unknown-linux-gnu
-+ echo powerpc64-unknown-linux-${LIBC}
- exit ;;
- ppc:Linux:*:*)
-- echo powerpc-unknown-linux-gnu
-+ echo powerpc-unknown-linux-${LIBC}
-+ exit ;;
-+ ppc64le:Linux:*:*)
-+ echo powerpc64le-unknown-linux-${LIBC}
-+ exit ;;
-+ ppcle:Linux:*:*)
-+ echo powerpcle-unknown-linux-${LIBC}
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
-- echo ${UNAME_MACHINE}-ibm-linux
-+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
- exit ;;
- sh64*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- sh*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- tile*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- vax:Linux:*:*)
-- echo ${UNAME_MACHINE}-dec-linux-gnu
-+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
- exit ;;
- x86_64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- xtensa*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-@@ -1201,6 +1227,9 @@ EOF
- BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
-+ x86_64:Haiku:*:*)
-+ echo x86_64-unknown-haiku
-+ exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
-@@ -1227,19 +1256,21 @@ EOF
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-- case $UNAME_PROCESSOR in
-- i386)
-- eval $set_cc_for_build
-- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-- grep IS_64BIT_ARCH >/dev/null
-- then
-- UNAME_PROCESSOR="x86_64"
-- fi
-- fi ;;
-- unknown) UNAME_PROCESSOR=powerpc ;;
-- esac
-+ eval $set_cc_for_build
-+ if test "$UNAME_PROCESSOR" = unknown ; then
-+ UNAME_PROCESSOR=powerpc
-+ fi
-+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-+ grep IS_64BIT_ARCH >/dev/null
-+ then
-+ case $UNAME_PROCESSOR in
-+ i386) UNAME_PROCESSOR=x86_64 ;;
-+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
-+ esac
-+ fi
-+ fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
-@@ -1256,7 +1287,7 @@ EOF
- NEO-?:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
- exit ;;
-- NSE-?:NONSTOP_KERNEL:*:*)
-+ NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
-@@ -1330,9 +1361,6 @@ EOF
- exit ;;
- esac
-
--#echo '(No uname command or uname output not recognized.)' 1>&2
--#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}"
1>&2
--
- eval $set_cc_for_build
- cat >$dummy.c <<EOF
- #ifdef _SEQUENT_
---- cloog-0.18.1/configure.jj 2013-10-11 09:27:47.000000000 +0200
-+++ cloog-0.18.1/configure 2014-04-11 18:24:56.611493706 +0200
-@@ -6383,7 +6383,7 @@ ia64-*-hpux*)
- rm -rf conftest*
- ;;
-
--x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
- s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
-@@ -6408,7 +6408,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
- ;;
- esac
- ;;
-- ppc64-*linux*|powerpc64-*linux*)
-+ powerpc64le-*linux*)
-+ LD="${LD-ld} -m elf32lppclinux"
-+ ;;
-+ powerpc64-*linux*)
- LD="${LD-ld} -m elf32ppclinux"
- ;;
- s390x-*linux*)
-@@ -6427,7 +6430,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
- x86_64-*linux*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
-- ppc*-*linux*|powerpc*-*linux*)
-+ powerpcle-*linux*)
-+ LD="${LD-ld} -m elf64lppc"
-+ ;;
-+ powerpc-*linux*)
- LD="${LD-ld} -m elf64ppc"
- ;;
- s390*-*linux*|s390*-*tpf*)
diff --git a/gcc6-aarch64-async-unw-tables.patch b/gcc6-aarch64-async-unw-tables.patch
deleted file mode 100644
index feec149..0000000
--- a/gcc6-aarch64-async-unw-tables.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-2014-04-07 Richard Henderson <rth(a)redhat.com>
-
- * common/config/aarch64/aarch64-common.c (TARGET_OPTION_INIT_STRUCT):
- Define.
- (aarch64_option_init_struct): New function.
-
---- gcc/common/config/aarch64/aarch64-common.c
-+++ gcc/common/config/aarch64/aarch64-common.c
-@@ -39,6 +39,9 @@
- #undef TARGET_OPTION_OPTIMIZATION_TABLE
- #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
-
-+#undef TARGET_OPTION_INIT_STRUCT
-+#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
-+
- /* Set default optimization options. */
- static const struct default_options aarch_option_optimization_table[] =
- {
-@@ -47,6 +50,16 @@ static const struct default_options aarch_option_optimization_table[]
=
- { OPT_LEVELS_NONE, 0, NULL, 0 }
- };
-
-+/* Implement TARGET_OPTION_INIT_STRUCT. */
-+
-+static void
-+aarch64_option_init_struct (struct gcc_options *opts)
-+{
-+ /* By default, always emit DWARF-2 unwind info. This allows debugging
-+ without maintaining a stack frame back-chain. */
-+ opts->x_flag_asynchronous_unwind_tables = 1;
-+}
-+
- /* Implement TARGET_HANDLE_OPTION.
- This function handles the target specific options for CPU/target selection.
-
diff --git a/gcc6-compile.patch b/gcc6-compile.patch
deleted file mode 100644
index 2e59ce8..0000000
--- a/gcc6-compile.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gcc/ubsan.c.x 2017-03-03 18:25:26.758115557 +0100
-+++ gcc/ubsan.c 2017-03-03 18:25:57.592511802 +0100
-@@ -1471,7 +1471,7 @@
-
- expanded_location xloc = expand_location (loc);
- if (xloc.file == NULL || strncmp (xloc.file, "\1", 2) == 0
-- || xloc.file == '\0' || xloc.file[0] == '\xff'
-+ || xloc.file[0] == '\0' || xloc.file[0] == '\xff'
- || xloc.file[1] == '\xff')
- return false;
-
diff --git a/gcc6-hack.patch b/gcc6-hack.patch
deleted file mode 100644
index 950ff63..0000000
--- a/gcc6-hack.patch
+++ /dev/null
@@ -1,159 +0,0 @@
---- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
-+++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
-@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
- ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
- ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
-
-+DEFAULTMULTIFLAGS :=
-+ifeq ($(MULTISUBDIR),)
-+targ:=$(subst -, ,$(target))
-+arch:=$(word 1,$(targ))
-+ifeq ($(words $(targ)),2)
-+osys:=$(word 2,$(targ))
-+else
-+osys:=$(word 3,$(targ))
-+endif
-+ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch)
$(osys))),)
-+ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
-+DEFAULTMULTIFLAGS := -m64
-+else
-+ifeq ($(strip $(filter-out s390%, $(arch))),)
-+DEFAULTMULTIFLAGS := -m31
-+else
-+DEFAULTMULTIFLAGS := -m32
-+endif
-+endif
-+endif
-+endif
-+
- # exeext should not be used because it's the *host* exeext. We're building
- # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
- # definitions just in case something slips through the safety net provided
- # by recursive make invocations in gcc/ada/Makefile.in
- LIBADA_FLAGS_TO_PASS = \
- "MAKEOVERRIDES=" \
-- "LDFLAGS=$(LDFLAGS)" \
-+ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
- "LN_S=$(LN_S)" \
- "SHELL=$(SHELL)" \
-- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
-- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
-- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
-+ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)
$(DEFAULTMULTIFLAGS)" \
- "PICFLAG_FOR_TARGET=$(PICFLAG)" \
- "THREAD_KIND=$(THREAD_KIND)" \
- "TRACE=$(TRACE)" \
-@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
- "exeext=.exeext.should.not.be.used " \
- 'CC=the.host.compiler.should.not.be.needed' \
- "GCC_FOR_TARGET=$(CC)" \
-- "CFLAGS=$(CFLAGS)"
-+ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
-
- # Rules to build gnatlib.
- .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
---- gcc/ada/sem_util.adb (revision 161677)
-+++ gcc/ada/sem_util.adb (working copy)
-@@ -5487,7 +5487,7 @@ package body Sem_Util is
- Exp : Node_Id;
- Assn : Node_Id;
- Choice : Node_Id;
-- Comp_Type : Entity_Id;
-+ Comp_Type : Entity_Id := Empty;
- Is_Array_Aggr : Boolean;
-
- begin
---- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
-+++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
-@@ -516,6 +516,8 @@ multi-do:
- ADAFLAGS="$(ADAFLAGS) $${flags}" \
- prefix="$(prefix)" \
- exec_prefix="$(exec_prefix)" \
-+ mandir="$(mandir)" \
-+ infodir="$(infodir)" \
- GCJFLAGS="$(GCJFLAGS) $${flags}" \
- GOCFLAGS="$(GOCFLAGS) $${flags}" \
- CXXFLAGS="$(CXXFLAGS) $${flags}" \
---- libjava/Makefile.am.jj 2010-07-09 11:17:33.729604090 +0200
-+++ libjava/Makefile.am 2010-07-09 13:16:41.894375641 +0200
-@@ -710,7 +710,8 @@ if USE_LIBGCJ_BC
- ## later.
- @echo Installing dummy lib libgcj_bc.so.1.0.0; \
- rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-- mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0
$(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so
$(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
- $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
- -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
- rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
---- libjava/Makefile.in.jj 2010-07-09 11:17:34.000000000 +0200
-+++ libjava/Makefile.in 2010-07-09 13:18:07.542572270 +0200
-@@ -12665,7 +12665,8 @@ install-exec-hook: install-binPROGRAMS i
- install-libexecsubPROGRAMS
- @USE_LIBGCJ_BC_TRUE@ @echo Installing dummy lib libgcj_bc.so.1.0.0; \
- @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
--@USE_LIBGCJ_BC_TRUE@ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0
$(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+@USE_LIBGCJ_BC_TRUE@ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so
$(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
- @USE_LIBGCJ_BC_TRUE@ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
- @USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
- @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
---- libcpp/macro.c.jj 2015-01-14 11:01:34.000000000 +0100
-+++ libcpp/macro.c 2015-01-14 14:22:19.286949884 +0100
-@@ -2947,8 +2947,6 @@ create_iso_definition (cpp_reader *pfile
- cpp_token *token;
- const cpp_token *ctoken;
- bool following_paste_op = false;
-- const char *paste_op_error_msg =
-- N_("'##' cannot appear at either end of a macro expansion");
- unsigned int num_extra_tokens = 0;
-
- /* Get the first token of the expansion (or the '(' of a
-@@ -3059,7 +3057,8 @@ create_iso_definition (cpp_reader *pfile
- function-like macros, but not at the end. */
- if (following_paste_op)
- {
-- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
-+ cpp_error (pfile, CPP_DL_ERROR,
-+ "'##' cannot appear at either end of a macro expansion");
- return false;
- }
- break;
-@@ -3072,7 +3071,8 @@ create_iso_definition (cpp_reader *pfile
- function-like macros, but not at the beginning. */
- if (macro->count == 1)
- {
-- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
-+ cpp_error (pfile, CPP_DL_ERROR,
-+ "'##' cannot appear at either end of a macro expansion");
- return false;
- }
-
---- libcpp/expr.c.jj 2015-01-14 11:01:34.000000000 +0100
-+++ libcpp/expr.c 2015-01-14 14:35:52.851002344 +0100
-@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
- if ((result & CPP_N_WIDTH) == CPP_N_LARGE
- && CPP_OPTION (pfile, cpp_warn_long_long))
- {
-- const char *message = CPP_OPTION (pfile, cplusplus)
-- ? N_("use of C++11 long long integer constant")
-- : N_("use of C99 long long integer constant");
--
- if (CPP_OPTION (pfile, c99))
- cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
-- 0, message);
-+ 0, CPP_OPTION (pfile, cplusplus)
-+ ? N_("use of C++11 long long integer constant")
-+ : N_("use of C99 long long integer constant"));
- else
- cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
-- virtual_location, 0, message);
-+ virtual_location, 0,
-+ CPP_OPTION (pfile, cplusplus)
-+ ? N_("use of C++11 long long integer constant")
-+ : N_("use of C99 long long integer constant"));
- }
-
- result |= CPP_N_INTEGER;
diff --git a/gcc6-i386-libgomp.patch b/gcc6-i386-libgomp.patch
deleted file mode 100644
index 520561e..0000000
--- a/gcc6-i386-libgomp.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
-+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
-@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
- ;;
- *)
- if test -z "$with_arch"; then
-- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
-+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- fi
- esac
- ;;
diff --git a/gcc6-isl-dl.patch b/gcc6-isl-dl.patch
deleted file mode 100644
index 209ac3f..0000000
--- a/gcc6-isl-dl.patch
+++ /dev/null
@@ -1,585 +0,0 @@
---- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
-+++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
-@@ -1013,7 +1013,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
- # and the system's installed libraries.
- LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
- $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
--BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
-+BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
- $(ZLIB)
- # Any system libraries needed just for GNAT.
- SYSLIBS = @GNAT_LIBEXC@
-@@ -2058,6 +2058,15 @@ $(out_object_file): $(out_file)
- $(common_out_object_file): $(common_out_file)
- $(COMPILE) $<
- $(POSTCOMPILE)
-+
-+graphite%.o : \
-+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite.o : \
-+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite%.o : \
-+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
-+graphite.o : \
-+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
- #
- # Generate header and source files from the machine description,
- # and compile them.
---- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
-+++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
-@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.
- #include <isl/ilp.h>
- #include <isl/schedule.h>
- #include <isl/ast_build.h>
-+#include <dlfcn.h>
-
- #ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
- /* isl 0.15 or later. */
-@@ -47,6 +48,494 @@ along with GCC; see the file COPYING3.
- # define isl_stat_ok 0
- #endif
-
-+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
-+#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_serialize_sccs)
-+#define DYNSYM_SET_YAML_STYLE DYNSYM (isl_printer_set_yaml_style);
-+#else
-+#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_fuse)
-+#define DYNSYM_SET_YAML_STYLE
-+#endif
-+
-+#define DYNSYMS \
-+ DYNSYM (isl_aff_add_coefficient_si); \
-+ DYNSYM (isl_aff_free); \
-+ DYNSYM (isl_aff_get_space); \
-+ DYNSYM (isl_aff_set_coefficient_si); \
-+ DYNSYM (isl_aff_set_constant_si); \
-+ DYNSYM (isl_aff_zero_on_domain); \
-+ DYNSYM (isl_band_free); \
-+ DYNSYM (isl_band_get_children); \
-+ DYNSYM (isl_band_get_partial_schedule); \
-+ DYNSYM (isl_band_has_children); \
-+ DYNSYM (isl_band_list_free); \
-+ DYNSYM (isl_band_list_get_band); \
-+ DYNSYM (isl_band_list_get_ctx); \
-+ DYNSYM (isl_band_list_n_band); \
-+ DYNSYM (isl_band_n_member); \
-+ DYNSYM (isl_basic_map_add_constraint); \
-+ DYNSYM (isl_basic_map_project_out); \
-+ DYNSYM (isl_basic_map_universe); \
-+ DYNSYM (isl_constraint_set_coefficient_si); \
-+ DYNSYM (isl_constraint_set_constant_si); \
-+ DYNSYM (isl_ctx_alloc); \
-+ DYNSYM (isl_ctx_free); \
-+ DYNSYM (isl_equality_alloc); \
-+ DYNSYM (isl_id_alloc); \
-+ DYNSYM (isl_id_copy); \
-+ DYNSYM (isl_id_free); \
-+ DYNSYM (isl_inequality_alloc); \
-+ DYNSYM (isl_local_space_copy); \
-+ DYNSYM (isl_local_space_free); \
-+ DYNSYM (isl_local_space_from_space); \
-+ DYNSYM (isl_local_space_range); \
-+ DYNSYM (isl_map_add_constraint); \
-+ DYNSYM (isl_map_add_dims); \
-+ DYNSYM (isl_map_align_params); \
-+ DYNSYM (isl_map_apply_range); \
-+ DYNSYM (isl_map_copy); \
-+ DYNSYM (isl_map_dim); \
-+ DYNSYM (isl_map_dump); \
-+ DYNSYM (isl_map_equate); \
-+ DYNSYM (isl_map_fix_si); \
-+ DYNSYM (isl_map_flat_product); \
-+ DYNSYM (isl_map_flat_range_product); \
-+ DYNSYM (isl_map_free); \
-+ DYNSYM (isl_map_from_basic_map); \
-+ DYNSYM (isl_map_from_pw_aff); \
-+ DYNSYM (isl_map_from_union_map); \
-+ DYNSYM (isl_map_get_ctx); \
-+ DYNSYM (isl_map_get_space); \
-+ DYNSYM (isl_map_get_tuple_id); \
-+ DYNSYM (isl_map_insert_dims); \
-+ DYNSYM (isl_map_intersect); \
-+ DYNSYM (isl_map_intersect_domain); \
-+ DYNSYM (isl_map_intersect_range); \
-+ DYNSYM (isl_map_is_empty); \
-+ DYNSYM (isl_map_lex_ge); \
-+ DYNSYM (isl_map_lex_le); \
-+ DYNSYM (isl_map_n_out); \
-+ DYNSYM (isl_map_range); \
-+ DYNSYM (isl_map_set_tuple_id); \
-+ DYNSYM (isl_map_universe); \
-+ DYNSYM (isl_options_set_on_error); \
-+ DYNSYM_SCHEDULE_FUSE; \
-+ DYNSYM_SET_YAML_STYLE \
-+ DYNSYM (isl_options_set_schedule_max_constant_term); \
-+ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
-+ DYNSYM (isl_printer_free); \
-+ DYNSYM (isl_printer_print_aff); \
-+ DYNSYM (isl_printer_print_constraint); \
-+ DYNSYM (isl_printer_print_map); \
-+ DYNSYM (isl_printer_print_set); \
-+ DYNSYM (isl_printer_to_file); \
-+ DYNSYM (isl_pw_aff_add); \
-+ DYNSYM (isl_pw_aff_alloc); \
-+ DYNSYM (isl_pw_aff_copy); \
-+ DYNSYM (isl_pw_aff_eq_set); \
-+ DYNSYM (isl_pw_aff_free); \
-+ DYNSYM (isl_pw_aff_from_aff); \
-+ DYNSYM (isl_pw_aff_ge_set); \
-+ DYNSYM (isl_pw_aff_gt_set); \
-+ DYNSYM (isl_pw_aff_is_cst); \
-+ DYNSYM (isl_pw_aff_le_set); \
-+ DYNSYM (isl_pw_aff_lt_set); \
-+ DYNSYM (isl_pw_aff_mul); \
-+ DYNSYM (isl_pw_aff_ne_set); \
-+ DYNSYM (isl_pw_aff_nonneg_set); \
-+ DYNSYM (isl_pw_aff_set_tuple_id); \
-+ DYNSYM (isl_pw_aff_sub); \
-+ DYNSYM (isl_pw_aff_zero_set); \
-+ DYNSYM (isl_schedule_free); \
-+ DYNSYM (isl_schedule_get_band_forest); \
-+ DYNSYM (isl_set_add_constraint); \
-+ DYNSYM (isl_set_add_dims); \
-+ DYNSYM (isl_set_apply); \
-+ DYNSYM (isl_set_coalesce); \
-+ DYNSYM (isl_set_copy); \
-+ DYNSYM (isl_set_dim); \
-+ DYNSYM (isl_set_fix_si); \
-+ DYNSYM (isl_set_free); \
-+ DYNSYM (isl_set_get_space); \
-+ DYNSYM (isl_set_get_tuple_id); \
-+ DYNSYM (isl_set_intersect); \
-+ DYNSYM (isl_set_is_empty); \
-+ DYNSYM (isl_set_n_dim); \
-+ DYNSYM (isl_set_nat_universe); \
-+ DYNSYM (isl_set_project_out); \
-+ DYNSYM (isl_set_set_tuple_id); \
-+ DYNSYM (isl_set_universe); \
-+ DYNSYM (isl_space_add_dims); \
-+ DYNSYM (isl_space_alloc); \
-+ DYNSYM (isl_space_copy); \
-+ DYNSYM (isl_space_dim); \
-+ DYNSYM (isl_space_domain); \
-+ DYNSYM (isl_space_find_dim_by_id); \
-+ DYNSYM (isl_space_free); \
-+ DYNSYM (isl_space_from_domain); \
-+ DYNSYM (isl_space_get_tuple_id); \
-+ DYNSYM (isl_space_params_alloc); \
-+ DYNSYM (isl_space_range); \
-+ DYNSYM (isl_space_set_alloc); \
-+ DYNSYM (isl_space_set_dim_id); \
-+ DYNSYM (isl_space_set_tuple_id); \
-+ DYNSYM (isl_union_map_add_map); \
-+ DYNSYM (isl_union_map_align_params); \
-+ DYNSYM (isl_union_map_apply_domain); \
-+ DYNSYM (isl_union_map_apply_range); \
-+ DYNSYM (isl_union_map_compute_flow); \
-+ DYNSYM (isl_union_map_copy); \
-+ DYNSYM (isl_union_map_empty); \
-+ DYNSYM (isl_union_map_flat_range_product); \
-+ DYNSYM (isl_union_map_foreach_map); \
-+ DYNSYM (isl_union_map_free); \
-+ DYNSYM (isl_union_map_from_map); \
-+ DYNSYM (isl_union_map_get_ctx); \
-+ DYNSYM (isl_union_map_get_space); \
-+ DYNSYM (isl_union_map_gist_domain); \
-+ DYNSYM (isl_union_map_gist_range); \
-+ DYNSYM (isl_union_map_intersect_domain); \
-+ DYNSYM (isl_union_map_is_empty); \
-+ DYNSYM (isl_union_map_subtract); \
-+ DYNSYM (isl_union_map_union); \
-+ DYNSYM (isl_union_set_add_set); \
-+ DYNSYM (isl_union_set_compute_schedule); \
-+ DYNSYM (isl_union_set_copy); \
-+ DYNSYM (isl_union_set_empty); \
-+ DYNSYM (isl_union_set_from_set); \
-+ DYNSYM (isl_aff_add_constant_val); \
-+ DYNSYM (isl_aff_get_coefficient_val); \
-+ DYNSYM (isl_aff_get_ctx); \
-+ DYNSYM (isl_aff_mod_val); \
-+ DYNSYM (isl_ast_build_ast_from_schedule); \
-+ DYNSYM (isl_ast_build_free); \
-+ DYNSYM (isl_ast_build_from_context); \
-+ DYNSYM (isl_ast_build_get_ctx); \
-+ DYNSYM (isl_ast_build_get_schedule); \
-+ DYNSYM (isl_ast_build_get_schedule_space); \
-+ DYNSYM (isl_ast_build_set_before_each_for); \
-+ DYNSYM (isl_ast_build_set_options); \
-+ DYNSYM (isl_ast_expr_free); \
-+ DYNSYM (isl_ast_expr_from_val); \
-+ DYNSYM (isl_ast_expr_get_ctx); \
-+ DYNSYM (isl_ast_expr_get_id); \
-+ DYNSYM (isl_ast_expr_get_op_arg); \
-+ DYNSYM (isl_ast_expr_get_op_n_arg); \
-+ DYNSYM (isl_ast_expr_get_op_type); \
-+ DYNSYM (isl_ast_expr_get_type); \
-+ DYNSYM (isl_ast_expr_get_val); \
-+ DYNSYM (isl_ast_expr_sub); \
-+ DYNSYM (isl_ast_node_block_get_children); \
-+ DYNSYM (isl_ast_node_for_get_body); \
-+ DYNSYM (isl_ast_node_for_get_cond); \
-+ DYNSYM (isl_ast_node_for_get_inc); \
-+ DYNSYM (isl_ast_node_for_get_init); \
-+ DYNSYM (isl_ast_node_for_get_iterator); \
-+ DYNSYM (isl_ast_node_free); \
-+ DYNSYM (isl_ast_node_get_annotation); \
-+ DYNSYM (isl_ast_node_get_type); \
-+ DYNSYM (isl_ast_node_if_get_cond); \
-+ DYNSYM (isl_ast_node_if_get_else); \
-+ DYNSYM (isl_ast_node_if_get_then); \
-+ DYNSYM (isl_ast_node_list_free); \
-+ DYNSYM (isl_ast_node_list_get_ast_node); \
-+ DYNSYM (isl_ast_node_list_n_ast_node); \
-+ DYNSYM (isl_ast_node_user_get_expr); \
-+ DYNSYM (isl_constraint_set_coefficient_val); \
-+ DYNSYM (isl_constraint_set_constant_val); \
-+ DYNSYM (isl_id_get_user); \
-+ DYNSYM (isl_local_space_get_ctx); \
-+ DYNSYM (isl_map_fix_val); \
-+ DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
-+ DYNSYM (isl_printer_print_ast_node); \
-+ DYNSYM (isl_printer_print_str); \
-+ DYNSYM (isl_printer_set_output_format); \
-+ DYNSYM (isl_pw_aff_mod_val); \
-+ DYNSYM (isl_schedule_constraints_compute_schedule); \
-+ DYNSYM (isl_schedule_constraints_on_domain); \
-+ DYNSYM (isl_schedule_constraints_set_coincidence); \
-+ DYNSYM (isl_schedule_constraints_set_proximity); \
-+ DYNSYM (isl_schedule_constraints_set_validity); \
-+ DYNSYM (isl_set_get_dim_id); \
-+ DYNSYM (isl_set_max_val); \
-+ DYNSYM (isl_set_min_val); \
-+ DYNSYM (isl_set_params); \
-+ DYNSYM (isl_space_align_params); \
-+ DYNSYM (isl_space_map_from_domain_and_range); \
-+ DYNSYM (isl_space_set_tuple_name); \
-+ DYNSYM (isl_space_wrap); \
-+ DYNSYM (isl_union_map_from_domain_and_range); \
-+ DYNSYM (isl_union_map_range); \
-+ DYNSYM (isl_union_set_union); \
-+ DYNSYM (isl_union_set_universe); \
-+ DYNSYM (isl_val_2exp); \
-+ DYNSYM (isl_val_add_ui); \
-+ DYNSYM (isl_val_copy); \
-+ DYNSYM (isl_val_free); \
-+ DYNSYM (isl_val_get_num_gmp); \
-+ DYNSYM (isl_val_int_from_gmp); \
-+ DYNSYM (isl_val_int_from_si); \
-+ DYNSYM (isl_val_int_from_ui); \
-+ DYNSYM (isl_val_mul); \
-+ DYNSYM (isl_val_neg); \
-+ DYNSYM (isl_val_sub); \
-+ DYNSYM (isl_printer_print_union_map); \
-+ DYNSYM (isl_pw_aff_get_ctx); \
-+ DYNSYM (isl_val_is_int); \
-+ DYNSYM (isl_ctx_get_max_operations); \
-+ DYNSYM (isl_ctx_set_max_operations); \
-+ DYNSYM (isl_ctx_last_error); \
-+ DYNSYM (isl_ctx_reset_operations); \
-+ DYNSYM (isl_map_coalesce); \
-+ DYNSYM (isl_printer_print_schedule); \
-+ DYNSYM (isl_set_set_dim_id); \
-+ DYNSYM (isl_union_map_coalesce);
-+
-+extern struct isl_pointers_s__
-+{
-+ bool inited;
-+ void *h;
-+#define DYNSYM(x) __typeof (x) *p_##x
-+ DYNSYMS
-+#undef DYNSYM
-+} isl_pointers__;
-+
-+#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
-+#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
-+#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
-+#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
-+#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
-+#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
-+#define isl_band_free (*isl_pointers__.p_isl_band_free)
-+#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
-+#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
-+#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
-+#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
-+#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
-+#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
-+#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
-+#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
-+#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
-+#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
-+#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
-+#define isl_constraint_set_coefficient_si
(*isl_pointers__.p_isl_constraint_set_coefficient_si)
-+#define isl_constraint_set_constant_si
(*isl_pointers__.p_isl_constraint_set_constant_si)
-+#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
-+#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
-+#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
-+#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
-+#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
-+#define isl_id_free (*isl_pointers__.p_isl_id_free)
-+#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
-+#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
-+#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
-+#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
-+#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
-+#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
-+#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
-+#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
-+#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
-+#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
-+#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
-+#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
-+#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
-+#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
-+#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
-+#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
-+#define isl_map_free (*isl_pointers__.p_isl_map_free)
-+#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
-+#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
-+#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
-+#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
-+#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
-+#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
-+#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
-+#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
-+#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
-+#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
-+#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
-+#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
-+#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
-+#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
-+#define isl_map_range (*isl_pointers__.p_isl_map_range)
-+#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
-+#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
-+#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
-+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
-+#define isl_options_set_schedule_serialize_sccs
(*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
-+#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
-+#else
-+#define isl_options_set_schedule_fuse (*isl_pointers__.p_isl_options_set_schedule_fuse)
-+#endif
-+#define isl_options_set_schedule_max_constant_term
(*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
-+#define isl_options_set_schedule_maximize_band_depth
(*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
-+#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
-+#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
-+#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
-+#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
-+#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
-+#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
-+#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
-+#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
-+#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
-+#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
-+#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
-+#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
-+#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
-+#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
-+#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
-+#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
-+#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
-+#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
-+#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
-+#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
-+#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
-+#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
-+#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
-+#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
-+#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
-+#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
-+#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
-+#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
-+#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
-+#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
-+#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
-+#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
-+#define isl_set_free (*isl_pointers__.p_isl_set_free)
-+#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
-+#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
-+#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
-+#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
-+#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
-+#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
-+#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
-+#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
-+#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
-+#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
-+#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
-+#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
-+#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
-+#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
-+#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
-+#define isl_space_free (*isl_pointers__.p_isl_space_free)
-+#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
-+#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
-+#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
-+#define isl_space_range (*isl_pointers__.p_isl_space_range)
-+#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
-+#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
-+#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
-+#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
-+#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
-+#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
-+#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
-+#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
-+#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
-+#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
-+#define isl_union_map_flat_range_product
(*isl_pointers__.p_isl_union_map_flat_range_product)
-+#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
-+#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
-+#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
-+#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
-+#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
-+#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
-+#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
-+#define isl_union_map_intersect_domain
(*isl_pointers__.p_isl_union_map_intersect_domain)
-+#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
-+#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
-+#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
-+#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
-+#define isl_union_set_compute_schedule
(*isl_pointers__.p_isl_union_set_compute_schedule)
-+#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
-+#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
-+#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
-+#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
-+#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
-+#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
-+#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
-+#define isl_ast_build_ast_from_schedule
(*isl_pointers__.p_isl_ast_build_ast_from_schedule)
-+#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
-+#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
-+#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
-+#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
-+#define isl_ast_build_get_schedule_space
(*isl_pointers__.p_isl_ast_build_get_schedule_space)
-+#define isl_ast_build_set_before_each_for
(*isl_pointers__.p_isl_ast_build_set_before_each_for)
-+#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
-+#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
-+#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
-+#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
-+#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
-+#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
-+#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
-+#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
-+#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
-+#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
-+#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
-+#define isl_ast_node_block_get_children
(*isl_pointers__.p_isl_ast_node_block_get_children)
-+#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
-+#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
-+#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
-+#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
-+#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
-+#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
-+#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
-+#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
-+#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
-+#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
-+#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
-+#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
-+#define isl_ast_node_list_get_ast_node
(*isl_pointers__.p_isl_ast_node_list_get_ast_node)
-+#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
-+#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
-+#define isl_constraint_set_coefficient_val
(*isl_pointers__.p_isl_constraint_set_coefficient_val)
-+#define isl_constraint_set_constant_val
(*isl_pointers__.p_isl_constraint_set_constant_val)
-+#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
-+#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
-+#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
-+#define isl_options_set_ast_build_atomic_upper_bound
(*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
-+#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
-+#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
-+#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
-+#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
-+#define isl_schedule_constraints_compute_schedule
(*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
-+#define isl_schedule_constraints_on_domain
(*isl_pointers__.p_isl_schedule_constraints_on_domain)
-+#define isl_schedule_constraints_set_coincidence
(*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
-+#define isl_schedule_constraints_set_proximity
(*isl_pointers__.p_isl_schedule_constraints_set_proximity)
-+#define isl_schedule_constraints_set_validity
(*isl_pointers__.p_isl_schedule_constraints_set_validity)
-+#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
-+#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
-+#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
-+#define isl_set_params (*isl_pointers__.p_isl_set_params)
-+#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
-+#define isl_space_map_from_domain_and_range
(*isl_pointers__.p_isl_space_map_from_domain_and_range)
-+#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
-+#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
-+#define isl_union_map_from_domain_and_range
(*isl_pointers__.p_isl_union_map_from_domain_and_range)
-+#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
-+#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
-+#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
-+#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
-+#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
-+#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
-+#define isl_val_free (*isl_pointers__.p_isl_val_free)
-+#define isl_val_get_num_gmp (*isl_pointers__.p_isl_val_get_num_gmp)
-+#define isl_val_int_from_gmp (*isl_pointers__.p_isl_val_int_from_gmp)
-+#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
-+#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
-+#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
-+#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
-+#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
-+#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
-+#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
-+#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
-+#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
-+#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
-+#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
-+#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
-+#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
-+#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
-+#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
-+#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
-+
- typedef struct poly_dr *poly_dr_p;
-
- typedef struct poly_bb *poly_bb_p;
---- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100
-+++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100
-@@ -54,6 +54,34 @@ along with GCC; see the file COPYING3.
- #include "tree-cfgcleanup.h"
- #include "graphite.h"
-
-+__typeof (isl_pointers__) isl_pointers__;
-+
-+static bool
-+init_isl_pointers (void)
-+{
-+ void *h;
-+
-+ if (isl_pointers__.inited)
-+ return isl_pointers__.h != NULL;
-+ h = dlopen ("libisl.so.13", RTLD_LAZY);
-+ isl_pointers__.h = h;
-+ if (h == NULL)
-+ return false;
-+#define DYNSYM(x) \
-+ do \
-+ { \
-+ union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
-+ u.q = dlsym (h, #x); \
-+ if (u.q == NULL) \
-+ return false; \
-+ isl_pointers__.p_##x = u.p; \
-+ } \
-+ while (0)
-+ DYNSYMS
-+#undef DYNSYM
-+ return true;
-+}
-+
- /* Print global statistics to FILE. */
-
- static void
-@@ -298,6 +326,15 @@ graphite_transform_loops (void)
- if (parallelized_function_p (cfun->decl))
- return;
-
-+ if (number_of_loops (cfun) <= 1)
-+ return;
-+
-+ if (!init_isl_pointers ())
-+ {
-+ sorry ("Graphite loop optimizations cannot be used");
-+ return;
-+ }
-+
- ctx = isl_ctx_alloc ();
- isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT);
- if (!graphite_initialize (ctx))
diff --git a/gcc6-java-nomulti.patch b/gcc6-java-nomulti.patch
deleted file mode 100644
index 17334aa..0000000
--- a/gcc6-java-nomulti.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- libjava/configure.ac.jj 2007-12-07 17:55:50.000000000 +0100
-+++ libjava/configure.ac 2007-12-07 18:36:56.000000000 +0100
-@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode,
- [allow rebuilding of .class and .h files]))
- AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" =
yes)
-
-+AC_ARG_ENABLE(libjava-multilib,
-+ AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
-+if test "$enable_libjava_multilib" = no; then
-+ multilib=no
-+ ac_configure_args="$ac_configure_args --disable-multilib"
-+fi
-+
- # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
- GCC_NO_EXECUTABLES
-
---- libjava/configure.jj 2007-12-07 17:55:50.000000000 +0100
-+++ libjava/configure 2007-12-07 18:39:58.000000000 +0100
-@@ -1021,6 +1021,8 @@ Optional Features:
- default=yes
- --enable-java-maintainer-mode
- allow rebuilding of .class and .h files
-+ --enable-libjava-multilib
-+ build libjava as multilib
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
- --enable-maintainer-mode enable make rules and dependencies not useful
-@@ -1973,6 +1975,16 @@ else
- fi
-
-
-+# Check whether --enable-libjava-multilib was given.
-+if test "${enable_libjava_multilib+set}" = set; then
-+ enableval=$enable_libjava_multilib;
-+fi
-+
-+if test "$enable_libjava_multilib" = no; then
-+ multilib=no
-+ ac_configure_args="$ac_configure_args --disable-multilib"
-+fi
-+
- # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
-
-
diff --git a/gcc6-libgo-p224.patch b/gcc6-libgo-p224.patch
deleted file mode 100644
index ec729cf..0000000
--- a/gcc6-libgo-p224.patch
+++ /dev/null
@@ -1,1123 +0,0 @@
---- libgo/Makefile.am.jj 2014-01-08 13:53:06.000000000 +0100
-+++ libgo/Makefile.am 2014-03-05 15:20:09.938466093 +0100
-@@ -1133,7 +1133,6 @@ go_crypto_ecdsa_files = \
- go/crypto/ecdsa/ecdsa.go
- go_crypto_elliptic_files = \
- go/crypto/elliptic/elliptic.go \
-- go/crypto/elliptic/p224.go \
- go/crypto/elliptic/p256.go
- go_crypto_hmac_files = \
- go/crypto/hmac/hmac.go
---- libgo/Makefile.in.jj 2014-01-08 13:53:06.000000000 +0100
-+++ libgo/Makefile.in 2014-03-05 15:20:20.372465471 +0100
-@@ -1291,7 +1291,6 @@ go_crypto_ecdsa_files = \
-
- go_crypto_elliptic_files = \
- go/crypto/elliptic/elliptic.go \
-- go/crypto/elliptic/p224.go \
- go/crypto/elliptic/p256.go
-
- go_crypto_hmac_files = \
---- libgo/go/crypto/elliptic/elliptic.go.jj 2016-02-05 20:11:20.000000000 +0100
-+++ libgo/go/crypto/elliptic/elliptic.go 2016-02-05 22:36:06.145039321 +0100
-@@ -338,7 +338,6 @@ var p384 *CurveParams
- var p521 *CurveParams
-
- func initAll() {
-- initP224()
- initP256()
- initP384()
- initP521()
---- libgo/go/crypto/elliptic/elliptic_test.go.jj 2016-02-05 20:11:19.000000000 +0100
-+++ libgo/go/crypto/elliptic/elliptic_test.go 2016-02-05 22:37:37.857772875 +0100
-@@ -5,39 +5,16 @@
- package elliptic
-
- import (
-- "crypto/rand"
-- "encoding/hex"
-- "fmt"
- "math/big"
- "testing"
- )
-
--func TestOnCurve(t *testing.T) {
-- p224 := P224()
-- if !p224.IsOnCurve(p224.Params().Gx, p224.Params().Gy) {
-- t.Errorf("FAIL")
-- }
--}
--
--func TestOffCurve(t *testing.T) {
-- p224 := P224()
-- x, y := new(big.Int).SetInt64(1), new(big.Int).SetInt64(1)
-- if p224.IsOnCurve(x, y) {
-- t.Errorf("FAIL: point off curve is claimed to be on the curve")
-- }
-- b := Marshal(p224, x, y)
-- x1, y1 := Unmarshal(p224, b)
-- if x1 != nil || y1 != nil {
-- t.Errorf("FAIL: unmarshalling a point not on the curve succeeded")
-- }
--}
--
- type baseMultTest struct {
- k string
- x, y string
- }
-
--var p224BaseMultTests = []baseMultTest{
-+var p256BaseMultTests = []baseMultTest{
- {
- "1",
- "b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
-@@ -300,47 +277,12 @@ var p224BaseMultTests = []baseMultTest{
- },
- }
-
--func TestBaseMult(t *testing.T) {
-- p224 := P224()
-- for i, e := range p224BaseMultTests {
-- k, ok := new(big.Int).SetString(e.k, 10)
-- if !ok {
-- t.Errorf("%d: bad value for k: %s", i, e.k)
-- }
-- x, y := p224.ScalarBaseMult(k.Bytes())
-- if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y {
-- t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x,
y, e.x, e.y)
-- }
-- if testing.Short() && i > 5 {
-- break
-- }
-- }
--}
--
--func TestGenericBaseMult(t *testing.T) {
-- // We use the P224 CurveParams directly in order to test the generic implementation.
-- p224 := P224().Params()
-- for i, e := range p224BaseMultTests {
-- k, ok := new(big.Int).SetString(e.k, 10)
-- if !ok {
-- t.Errorf("%d: bad value for k: %s", i, e.k)
-- }
-- x, y := p224.ScalarBaseMult(k.Bytes())
-- if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y {
-- t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x,
y, e.x, e.y)
-- }
-- if testing.Short() && i > 5 {
-- break
-- }
-- }
--}
--
- func TestP256BaseMult(t *testing.T) {
- p256 := P256()
- p256Generic := p256.Params()
-
-- scalars :=
make([]*big.Int, 0, len(p224BaseMultTests)+1)
-- for _, e := range p224BaseMultTests {
-+ scalars :=
make([]*big.Int, 0, len(p256BaseMultTests)+1)
-+ for _, e := range p256BaseMultTests {
- k, _ := new(big.Int).SetString(e.k, 10)
- scalars = append(scalars, k)
- }
-@@ -365,7 +307,7 @@ func TestP256Mult(t *testing.T) {
- p256 := P256()
- p256Generic := p256.Params()
-
-- for i, e := range p224BaseMultTests {
-+ for i, e := range p256BaseMultTests {
- x, _ := new(big.Int).SetString(e.x, 16)
- y, _ := new(big.Int).SetString(e.y, 16)
- k, _ := new(big.Int).SetString(e.k, 10)
-@@ -386,7 +328,6 @@ func TestInfinity(t *testing.T) {
- name string
- curve Curve
- }{
-- {"p224", P224()},
- {"p256", P256()},
- }
-
-@@ -419,21 +360,10 @@ func TestInfinity(t *testing.T) {
- }
- }
-
--func BenchmarkBaseMult(b *testing.B) {
-- b.ResetTimer()
-- p224 := P224()
-- e := p224BaseMultTests[25]
-- k, _ := new(big.Int).SetString(e.k, 10)
-- b.StartTimer()
-- for i := 0; i < b.N; i++ {
-- p224.ScalarBaseMult(k.Bytes())
-- }
--}
--
- func BenchmarkBaseMultP256(b *testing.B) {
- b.ResetTimer()
- p256 := P256()
-- e := p224BaseMultTests[25]
-+ e := p256BaseMultTests[25]
- k, _ := new(big.Int).SetString(e.k, 10)
- b.StartTimer()
- for i := 0; i < b.N; i++ {
-@@ -452,32 +382,3 @@ func BenchmarkScalarMultP256(b *testing.
- p256.ScalarMult(x, y, priv)
- }
- }
--
--func TestMarshal(t *testing.T) {
-- p224 := P224()
-- _, x, y, err := GenerateKey(p224, rand.Reader)
-- if err != nil {
-- t.Error(err)
-- return
-- }
-- serialized := Marshal(p224, x, y)
-- xx, yy := Unmarshal(p224, serialized)
-- if xx == nil {
-- t.Error("failed to unmarshal")
-- return
-- }
-- if xx.Cmp(x) != 0 || yy.Cmp(y) != 0 {
-- t.Error("unmarshal returned different values")
-- return
-- }
--}
--
--func TestP224Overflow(t *testing.T) {
-- // This tests for a specific bug in the P224 implementation.
-- p224 := P224()
-- pointData, _ :=
hex.DecodeString("049B535B45FB0A2072398A6831834624C7E32CCFD5A4B933BCEAF77F1DD945E08BBE5178F5EDF5E733388F196D2A631D2E075BB16CBFEEA15B")
-- x, y := Unmarshal(p224, pointData)
-- if !p224.IsOnCurve(x, y) {
-- t.Error("P224 failed to validate a correct point")
-- }
--}
---- libgo/go/crypto/ecdsa/ecdsa_test.go.jj 2016-02-05 20:10:59.000000000 +0100
-+++ libgo/go/crypto/ecdsa/ecdsa_test.go 2016-02-05 22:41:54.916215999 +0100
-@@ -33,7 +33,6 @@ func testKeyGeneration(t *testing.T, c e
- }
-
- func TestKeyGeneration(t *testing.T) {
-- testKeyGeneration(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -98,7 +97,6 @@ func testSignAndVerify(t *testing.T, c e
- }
-
- func TestSignAndVerify(t *testing.T) {
-- testSignAndVerify(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -135,7 +133,6 @@ func testNonceSafety(t *testing.T, c ell
- }
-
- func TestNonceSafety(t *testing.T) {
-- testNonceSafety(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -170,7 +167,6 @@ func testINDCCA(t *testing.T, c elliptic
- }
-
- func TestINDCCA(t *testing.T) {
-- testINDCCA(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -236,8 +232,6 @@ func TestVectors(t *testing.T) {
- parts := strings.SplitN(line, ",", 2)
-
- switch parts[0] {
-- case "P-224":
-- pub.Curve = elliptic.P224()
- case "P-256":
- pub.Curve = elliptic.P256()
- case "P-384":
---- libgo/go/crypto/x509/x509.go.jj 2016-02-05 20:11:19.000000000 +0100
-+++ libgo/go/crypto/x509/x509.go 2016-02-05 22:36:06.147039294 +0100
-@@ -334,9 +334,6 @@ func getPublicKeyAlgorithmFromOID(oid as
-
- // RFC 5480, 2.1.1.1. Named Curve
- //
--// secp224r1 OBJECT IDENTIFIER ::= {
--// iso(1) identified-organization(3) certicom(132) curve(0) 33 }
--//
- // secp256r1 OBJECT IDENTIFIER ::= {
- // iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
- // prime(1) 7 }
-@@ -349,7 +346,6 @@ func getPublicKeyAlgorithmFromOID(oid as
- //
- // NB: secp256r1 is equivalent to prime256v1
- var (
-- oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33}
- oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7}
- oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34}
- oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35}
-@@ -357,8 +353,6 @@ var (
-
- func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve {
- switch {
-- case oid.Equal(oidNamedCurveP224):
-- return elliptic.P224()
- case oid.Equal(oidNamedCurveP256):
- return elliptic.P256()
- case oid.Equal(oidNamedCurveP384):
-@@ -371,8 +365,6 @@ func namedCurveFromOID(oid asn1.ObjectId
-
- func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) {
- switch curve {
-- case elliptic.P224():
-- return oidNamedCurveP224, true
- case elliptic.P256():
- return oidNamedCurveP256, true
- case elliptic.P384():
-@@ -1502,7 +1494,7 @@ func signingParamsForPublicKey(pub inter
- pubType = ECDSA
-
- switch pub.Curve {
-- case elliptic.P224(), elliptic.P256():
-+ case elliptic.P256():
- hashFunc = crypto.SHA256
- sigAlgo.Algorithm = oidSignatureECDSAWithSHA256
- case elliptic.P384():
---- libgo/go/crypto/elliptic/p224.go.jj 2016-01-15 10:58:09.000000000 +0100
-+++ libgo/go/crypto/elliptic/p224.go 2016-02-05 22:36:06.147039294 +0100
-@@ -1,765 +0,0 @@
--// Copyright 2012 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--package elliptic
--
--// This is a constant-time, 32-bit implementation of P224. See FIPS 186-3,
--// section D.2.2.
--//
--// See
http://www.imperialviolet.org/2010/12/04/ecc.html ([1]) for background.
--
--import (
-- "math/big"
--)
--
--var p224 p224Curve
--
--type p224Curve struct {
-- *CurveParams
-- gx, gy, b p224FieldElement
--}
--
--func initP224() {
-- // See FIPS 186-3, section D.2.2
-- p224.CurveParams = &CurveParams{Name: "P-224"}
-- p224.P, _ =
new(big.Int).SetString("26959946667150639794667015087019630673557916260026308143510066298881",
10)
-- p224.N, _ =
new(big.Int).SetString("26959946667150639794667015087019625940457807714424391721682722368061",
10)
-- p224.B, _ =
new(big.Int).SetString("b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4",
16)
-- p224.Gx, _ =
new(big.Int).SetString("b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
16)
-- p224.Gy, _ =
new(big.Int).SetString("bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34",
16)
-- p224.BitSize = 224
--
-- p224FromBig(&p224.gx, p224.Gx)
-- p224FromBig(&p224.gy, p224.Gy)
-- p224FromBig(&p224.b, p224.B)
--}
--
--// P224 returns a Curve which implements P-224 (see FIPS 186-3, section D.2.2)
--func P224() Curve {
-- initonce.Do(initAll)
-- return p224
--}
--
--func (curve p224Curve) Params() *CurveParams {
-- return curve.CurveParams
--}
--
--func (curve p224Curve) IsOnCurve(bigX, bigY *big.Int) bool {
-- var x, y p224FieldElement
-- p224FromBig(&x, bigX)
-- p224FromBig(&y, bigY)
--
-- // y = x - 3x + b
-- var tmp p224LargeFieldElement
-- var x3 p224FieldElement
-- p224Square(&x3, &x, &tmp)
-- p224Mul(&x3, &x3, &x, &tmp)
--
-- for i := 0; i < 8; i++ {
-- x[i] *= 3
-- }
-- p224Sub(&x3, &x3, &x)
-- p224Reduce(&x3)
-- p224Add(&x3, &x3, &curve.b)
-- p224Contract(&x3, &x3)
--
-- p224Square(&y, &y, &tmp)
-- p224Contract(&y, &y)
--
-- for i := 0; i < 8; i++ {
-- if y[i] != x3[i] {
-- return false
-- }
-- }
-- return true
--}
--
--func (p224Curve) Add(bigX1, bigY1, bigX2, bigY2 *big.Int) (x, y *big.Int) {
-- var x1, y1, z1, x2, y2, z2, x3, y3, z3 p224FieldElement
--
-- p224FromBig(&x1, bigX1)
-- p224FromBig(&y1, bigY1)
-- if bigX1.Sign() != 0 || bigY1.Sign() != 0 {
-- z1[0] = 1
-- }
-- p224FromBig(&x2, bigX2)
-- p224FromBig(&y2, bigY2)
-- if bigX2.Sign() != 0 || bigY2.Sign() != 0 {
-- z2[0] = 1
-- }
--
-- p224AddJacobian(&x3, &y3, &z3, &x1, &y1, &z1, &x2, &y2,
&z2)
-- return p224ToAffine(&x3, &y3, &z3)
--}
--
--func (p224Curve) Double(bigX1, bigY1 *big.Int) (x, y *big.Int) {
-- var x1, y1, z1, x2, y2, z2 p224FieldElement
--
-- p224FromBig(&x1, bigX1)
-- p224FromBig(&y1, bigY1)
-- z1[0] = 1
--
-- p224DoubleJacobian(&x2, &y2, &z2, &x1, &y1, &z1)
-- return p224ToAffine(&x2, &y2, &z2)
--}
--
--func (p224Curve) ScalarMult(bigX1, bigY1 *big.Int, scalar []byte) (x, y *big.Int) {
-- var x1, y1, z1, x2, y2, z2 p224FieldElement
--
-- p224FromBig(&x1, bigX1)
-- p224FromBig(&y1, bigY1)
-- z1[0] = 1
--
-- p224ScalarMult(&x2, &y2, &z2, &x1, &y1, &z1, scalar)
-- return p224ToAffine(&x2, &y2, &z2)
--}
--
--func (curve p224Curve) ScalarBaseMult(scalar []byte) (x, y *big.Int) {
-- var z1, x2, y2, z2 p224FieldElement
--
-- z1[0] = 1
-- p224ScalarMult(&x2, &y2, &z2, &curve.gx, &curve.gy, &z1,
scalar)
-- return p224ToAffine(&x2, &y2, &z2)
--}
--
--// Field element functions.
--//
--// The field that we're dealing with is /p where p = 2**224 - 2**96 + 1.
--//
--// Field elements are represented by a FieldElement, which is a typedef to an
--// array of 8 uint32's. The value of a FieldElement, a, is:
--// a[0] + 2**28a[1] + 2**56a[1] + ... + 2**196a[7]
--//
--// Using 28-bit limbs means that there's only 4 bits of headroom, which is less
--// than we would really like. But it has the useful feature that we hit 2**224
--// exactly, making the reflections during a reduce much nicer.
--type p224FieldElement [8]uint32
--
--// p224P is the order of the field, represented as a p224FieldElement.
--var p224P = [8]uint32{1, 0, 0, 0xffff000, 0xfffffff, 0xfffffff, 0xfffffff, 0xfffffff}
--
--// p224IsZero returns 1 if a == 0 mod p and 0 otherwise.
--//
--// a[i] < 2**29
--func p224IsZero(a *p224FieldElement) uint32 {
-- // Since a p224FieldElement contains 224 bits there are two possible
-- // representations of 0: 0 and p.
-- var minimal p224FieldElement
-- p224Contract(&minimal, a)
--
-- var isZero, isP uint32
-- for i, v := range minimal {
-- isZero |= v
-- isP |= v - p224P[i]
-- }
--
-- // If either isZero or isP is 0, then we should return 1.
-- isZero |= isZero >> 16
-- isZero |= isZero >> 8
-- isZero |= isZero >> 4
-- isZero |= isZero >> 2
-- isZero |= isZero >> 1
--
-- isP |= isP >> 16
-- isP |= isP >> 8
-- isP |= isP >> 4
-- isP |= isP >> 2
-- isP |= isP >> 1
--
-- // For isZero and isP, the LSB is 0 iff all the bits are zero.
-- result := isZero & isP
-- result = (^result) & 1
--
-- return result
--}
--
--// p224Add computes *out = a+b
--//
--// a[i] + b[i] < 2**32
--func p224Add(out, a, b *p224FieldElement) {
-- for i := 0; i < 8; i++ {
-- out[i] = a[i] + b[i]
-- }
--}
--
--const two31p3 = 1<<31 + 1<<3
--const two31m3 = 1<<31 - 1<<3
--const two31m15m3 = 1<<31 - 1<<15 - 1<<3
--
--// p224ZeroModP31 is 0 mod p where bit 31 is set in all limbs so that we can
--// subtract smaller amounts without underflow. See the section "Subtraction"
in
--// [1] for reasoning.
--var p224ZeroModP31 = []uint32{two31p3, two31m3, two31m3, two31m15m3, two31m3, two31m3,
two31m3, two31m3}
--
--// p224Sub computes *out = a-b
--//
--// a[i], b[i] < 2**30
--// out[i] < 2**32
--func p224Sub(out, a, b *p224FieldElement) {
-- for i := 0; i < 8; i++ {
-- out[i] = a[i] + p224ZeroModP31[i] - b[i]
-- }
--}
--
--// LargeFieldElement also represents an element of the field. The limbs are
--// still spaced 28-bits apart and in little-endian order. So the limbs are at
--// 0, 28, 56, ..., 392 bits, each 64-bits wide.
--type p224LargeFieldElement [15]uint64
--
--const two63p35 = 1<<63 + 1<<35
--const two63m35 = 1<<63 - 1<<35
--const two63m35m19 = 1<<63 - 1<<35 - 1<<19
--
--// p224ZeroModP63 is 0 mod p where bit 63 is set in all limbs. See the section
--// "Subtraction" in [1] for why.
--var p224ZeroModP63 = [8]uint64{two63p35, two63m35, two63m35, two63m35, two63m35m19,
two63m35, two63m35, two63m35}
--
--const bottom12Bits = 0xfff
--const bottom28Bits = 0xfffffff
--
--// p224Mul computes *out = a*b
--//
--// a[i] < 2**29, b[i] < 2**30 (or vice versa)
--// out[i] < 2**29
--func p224Mul(out, a, b *p224FieldElement, tmp *p224LargeFieldElement) {
-- for i := 0; i < 15; i++ {
-- tmp[i] = 0
-- }
--
-- for i := 0; i < 8; i++ {
-- for j := 0; j < 8; j++ {
-- tmp[i+j] += uint64(a[i]) * uint64(b[j])
-- }
-- }
--
-- p224ReduceLarge(out, tmp)
--}
--
--// Square computes *out = a*a
--//
--// a[i] < 2**29
--// out[i] < 2**29
--func p224Square(out, a *p224FieldElement, tmp *p224LargeFieldElement) {
-- for i := 0; i < 15; i++ {
-- tmp[i] = 0
-- }
--
-- for i := 0; i < 8; i++ {
-- for j := 0; j <= i; j++ {
-- r := uint64(a[i]) * uint64(a[j])
-- if i == j {
-- tmp[i+j] += r
-- } else {
-- tmp[i+j] += r << 1
-- }
-- }
-- }
--
-- p224ReduceLarge(out, tmp)
--}
--
--// ReduceLarge converts a p224LargeFieldElement to a p224FieldElement.
--//
--// in[i] < 2**62
--func p224ReduceLarge(out *p224FieldElement, in *p224LargeFieldElement) {
-- for i := 0; i < 8; i++ {
-- in[i] += p224ZeroModP63[i]
-- }
--
-- // Eliminate the coefficients at 2**224 and greater.
-- for i := 14; i >= 8; i-- {
-- in[i-8] -= in[i]
-- in[i-5] += (in[i] & 0xffff) << 12
-- in[i-4] += in[i] >> 16
-- }
-- in[8] = 0
-- // in[0..8] < 2**64
--
-- // As the values become small enough, we start to store them in |out|
-- // and use 32-bit operations.
-- for i := 1; i < 8; i++ {
-- in[i+1] += in[i] >> 28
-- out[i] = uint32(in[i] & bottom28Bits)
-- }
-- in[0] -= in[8]
-- out[3] += uint32(in[8]&0xffff) << 12
-- out[4] += uint32(in[8] >> 16)
-- // in[0] < 2**64
-- // out[3] < 2**29
-- // out[4] < 2**29
-- // out[1,2,5..7] < 2**28
--
-- out[0] = uint32(in[0] & bottom28Bits)
-- out[1] += uint32((in[0] >> 28) & bottom28Bits)
-- out[2] += uint32(in[0] >> 56)
-- // out[0] < 2**28
-- // out[1..4] < 2**29
-- // out[5..7] < 2**28
--}
--
--// Reduce reduces the coefficients of a to smaller bounds.
--//
--// On entry: a[i] < 2**31 + 2**30
--// On exit: a[i] < 2**29
--func p224Reduce(a *p224FieldElement) {
-- for i := 0; i < 7; i++ {
-- a[i+1] += a[i] >> 28
-- a[i] &= bottom28Bits
-- }
-- top := a[7] >> 28
-- a[7] &= bottom28Bits
--
-- // top < 2**4
-- mask := top
-- mask |= mask >> 2
-- mask |= mask >> 1
-- mask <<= 31
-- mask = uint32(int32(mask) >> 31)
-- // Mask is all ones if top != 0, all zero otherwise
--
-- a[0] -= top
-- a[3] += top << 12
--
-- // We may have just made a[0] negative but, if we did, then we must
-- // have added something to a[3], this it's > 2**12. Therefore we can
-- // carry down to a[0].
-- a[3] -= 1 & mask
-- a[2] += mask & (1<<28 - 1)
-- a[1] += mask & (1<<28 - 1)
-- a[0] += mask & (1 << 28)
--}
--
--// p224Invert calculates *out = in**-1 by computing in**(2**224 - 2**96 - 1),
--// i.e. Fermat's little theorem.
--func p224Invert(out, in *p224FieldElement) {
-- var f1, f2, f3, f4 p224FieldElement
-- var c p224LargeFieldElement
--
-- p224Square(&f1, in, &c) // 2
-- p224Mul(&f1, &f1, in, &c) // 2**2 - 1
-- p224Square(&f1, &f1, &c) // 2**3 - 2
-- p224Mul(&f1, &f1, in, &c) // 2**3 - 1
-- p224Square(&f2, &f1, &c) // 2**4 - 2
-- p224Square(&f2, &f2, &c) // 2**5 - 4
-- p224Square(&f2, &f2, &c) // 2**6 - 8
-- p224Mul(&f1, &f1, &f2, &c) // 2**6 - 1
-- p224Square(&f2, &f1, &c) // 2**7 - 2
-- for i := 0; i < 5; i++ { // 2**12 - 2**6
-- p224Square(&f2, &f2, &c)
-- }
-- p224Mul(&f2, &f2, &f1, &c) // 2**12 - 1
-- p224Square(&f3, &f2, &c) // 2**13 - 2
-- for i := 0; i < 11; i++ { // 2**24 - 2**12
-- p224Square(&f3, &f3, &c)
-- }
-- p224Mul(&f2, &f3, &f2, &c) // 2**24 - 1
-- p224Square(&f3, &f2, &c) // 2**25 - 2
-- for i := 0; i < 23; i++ { // 2**48 - 2**24
-- p224Square(&f3, &f3, &c)
-- }
-- p224Mul(&f3, &f3, &f2, &c) // 2**48 - 1
-- p224Square(&f4, &f3, &c) // 2**49 - 2
-- for i := 0; i < 47; i++ { // 2**96 - 2**48
-- p224Square(&f4, &f4, &c)
-- }
-- p224Mul(&f3, &f3, &f4, &c) // 2**96 - 1
-- p224Square(&f4, &f3, &c) // 2**97 - 2
-- for i := 0; i < 23; i++ { // 2**120 - 2**24
-- p224Square(&f4, &f4, &c)
-- }
-- p224Mul(&f2, &f4, &f2, &c) // 2**120 - 1
-- for i := 0; i < 6; i++ { // 2**126 - 2**6
-- p224Square(&f2, &f2, &c)
-- }
-- p224Mul(&f1, &f1, &f2, &c) // 2**126 - 1
-- p224Square(&f1, &f1, &c) // 2**127 - 2
-- p224Mul(&f1, &f1, in, &c) // 2**127 - 1
-- for i := 0; i < 97; i++ { // 2**224 - 2**97
-- p224Square(&f1, &f1, &c)
-- }
-- p224Mul(out, &f1, &f3, &c) // 2**224 - 2**96 - 1
--}
--
--// p224Contract converts a FieldElement to its unique, minimal form.
--//
--// On entry, in[i] < 2**29
--// On exit, in[i] < 2**28
--func p224Contract(out, in *p224FieldElement) {
-- copy(out[:], in[:])
--
-- for i := 0; i < 7; i++ {
-- out[i+1] += out[i] >> 28
-- out[i] &= bottom28Bits
-- }
-- top := out[7] >> 28
-- out[7] &= bottom28Bits
--
-- out[0] -= top
-- out[3] += top << 12
--
-- // We may just have made out[i] negative. So we carry down. If we made
-- // out[0] negative then we know that out[3] is sufficiently positive
-- // because we just added to it.
-- for i := 0; i < 3; i++ {
-- mask := uint32(int32(out[i]) >> 31)
-- out[i] += (1 << 28) & mask
-- out[i+1] -= 1 & mask
-- }
--
-- // We might have pushed out[3] over 2**28 so we perform another, partial,
-- // carry chain.
-- for i := 3; i < 7; i++ {
-- out[i+1] += out[i] >> 28
-- out[i] &= bottom28Bits
-- }
-- top = out[7] >> 28
-- out[7] &= bottom28Bits
--
-- // Eliminate top while maintaining the same value mod p.
-- out[0] -= top
-- out[3] += top << 12
--
-- // There are two cases to consider for out[3]:
-- // 1) The first time that we eliminated top, we didn't push out[3] over
-- // 2**28. In this case, the partial carry chain didn't change any values
-- // and top is zero.
-- // 2) We did push out[3] over 2**28 the first time that we eliminated top.
-- // The first value of top was in [0..16), therefore, prior to eliminating
-- // the first top, 0xfff1000 <= out[3] <= 0xfffffff. Therefore, after
-- // overflowing and being reduced by the second carry chain, out[3] <=
-- // 0xf000. Thus it cannot have overflowed when we eliminated top for the
-- // second time.
--
-- // Again, we may just have made out[0] negative, so do the same carry down.
-- // As before, if we made out[0] negative then we know that out[3] is
-- // sufficiently positive.
-- for i := 0; i < 3; i++ {
-- mask := uint32(int32(out[i]) >> 31)
-- out[i] += (1 << 28) & mask
-- out[i+1] -= 1 & mask
-- }
--
-- // Now we see if the value is >= p and, if so, subtract p.
--
-- // First we build a mask from the top four limbs, which must all be
-- // equal to bottom28Bits if the whole value is >= p. If top4AllOnes
-- // ends up with any zero bits in the bottom 28 bits, then this wasn't
-- // true.
-- top4AllOnes := uint32(0xffffffff)
-- for i := 4; i < 8; i++ {
-- top4AllOnes &= out[i]
-- }
-- top4AllOnes |= 0xf0000000
-- // Now we replicate any zero bits to all the bits in top4AllOnes.
-- top4AllOnes &= top4AllOnes >> 16
-- top4AllOnes &= top4AllOnes >> 8
-- top4AllOnes &= top4AllOnes >> 4
-- top4AllOnes &= top4AllOnes >> 2
-- top4AllOnes &= top4AllOnes >> 1
-- top4AllOnes = uint32(int32(top4AllOnes<<31) >> 31)
--
-- // Now we test whether the bottom three limbs are non-zero.
-- bottom3NonZero := out[0] | out[1] | out[2]
-- bottom3NonZero |= bottom3NonZero >> 16
-- bottom3NonZero |= bottom3NonZero >> 8
-- bottom3NonZero |= bottom3NonZero >> 4
-- bottom3NonZero |= bottom3NonZero >> 2
-- bottom3NonZero |= bottom3NonZero >> 1
-- bottom3NonZero = uint32(int32(bottom3NonZero<<31) >> 31)
--
-- // Everything depends on the value of out[3].
-- // If it's > 0xffff000 and top4AllOnes != 0 then the whole value is >= p
-- // If it's = 0xffff000 and top4AllOnes != 0 and bottom3NonZero != 0,
-- // then the whole value is >= p
-- // If it's < 0xffff000, then the whole value is < p
-- n := out[3] - 0xffff000
-- out3Equal := n
-- out3Equal |= out3Equal >> 16
-- out3Equal |= out3Equal >> 8
-- out3Equal |= out3Equal >> 4
-- out3Equal |= out3Equal >> 2
-- out3Equal |= out3Equal >> 1
-- out3Equal = ^uint32(int32(out3Equal<<31) >> 31)
--
-- // If out[3] > 0xffff000 then n's MSB will be zero.
-- out3GT := ^uint32(int32(n) >> 31)
--
-- mask := top4AllOnes & ((out3Equal & bottom3NonZero) | out3GT)
-- out[0] -= 1 & mask
-- out[3] -= 0xffff000 & mask
-- out[4] -= 0xfffffff & mask
-- out[5] -= 0xfffffff & mask
-- out[6] -= 0xfffffff & mask
-- out[7] -= 0xfffffff & mask
--}
--
--// Group element functions.
--//
--// These functions deal with group elements. The group is an elliptic curve
--// group with a = -3 defined in FIPS 186-3, section D.2.2.
--
--// p224AddJacobian computes *out = a+b where a != b.
--func p224AddJacobian(x3, y3, z3, x1, y1, z1, x2, y2, z2 *p224FieldElement) {
-- // See
http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#addition-p22...
-- var z1z1, z2z2, u1, u2, s1, s2, h, i, j, r, v p224FieldElement
-- var c p224LargeFieldElement
--
-- z1IsZero := p224IsZero(z1)
-- z2IsZero := p224IsZero(z2)
--
-- // Z1Z1 = Z1
-- p224Square(&z1z1, z1, &c)
-- // Z2Z2 = Z2
-- p224Square(&z2z2, z2, &c)
-- // U1 = X1*Z2Z2
-- p224Mul(&u1, x1, &z2z2, &c)
-- // U2 = X2*Z1Z1
-- p224Mul(&u2, x2, &z1z1, &c)
-- // S1 = Y1*Z2*Z2Z2
-- p224Mul(&s1, z2, &z2z2, &c)
-- p224Mul(&s1, y1, &s1, &c)
-- // S2 = Y2*Z1*Z1Z1
-- p224Mul(&s2, z1, &z1z1, &c)
-- p224Mul(&s2, y2, &s2, &c)
-- // H = U2-U1
-- p224Sub(&h, &u2, &u1)
-- p224Reduce(&h)
-- xEqual := p224IsZero(&h)
-- // I = (2*H)
-- for j := 0; j < 8; j++ {
-- i[j] = h[j] << 1
-- }
-- p224Reduce(&i)
-- p224Square(&i, &i, &c)
-- // J = H*I
-- p224Mul(&j, &h, &i, &c)
-- // r = 2*(S2-S1)
-- p224Sub(&r, &s2, &s1)
-- p224Reduce(&r)
-- yEqual := p224IsZero(&r)
-- if xEqual == 1 && yEqual == 1 && z1IsZero == 0 && z2IsZero == 0
{
-- p224DoubleJacobian(x3, y3, z3, x1, y1, z1)
-- return
-- }
-- for i := 0; i < 8; i++ {
-- r[i] <<= 1
-- }
-- p224Reduce(&r)
-- // V = U1*I
-- p224Mul(&v, &u1, &i, &c)
-- // Z3 = ((Z1+Z2)-Z1Z1-Z2Z2)*H
-- p224Add(&z1z1, &z1z1, &z2z2)
-- p224Add(&z2z2, z1, z2)
-- p224Reduce(&z2z2)
-- p224Square(&z2z2, &z2z2, &c)
-- p224Sub(z3, &z2z2, &z1z1)
-- p224Reduce(z3)
-- p224Mul(z3, z3, &h, &c)
-- // X3 = r-J-2*V
-- for i := 0; i < 8; i++ {
-- z1z1[i] = v[i] << 1
-- }
-- p224Add(&z1z1, &j, &z1z1)
-- p224Reduce(&z1z1)
-- p224Square(x3, &r, &c)
-- p224Sub(x3, x3, &z1z1)
-- p224Reduce(x3)
-- // Y3 = r*(V-X3)-2*S1*J
-- for i := 0; i < 8; i++ {
-- s1[i] <<= 1
-- }
-- p224Mul(&s1, &s1, &j, &c)
-- p224Sub(&z1z1, &v, x3)
-- p224Reduce(&z1z1)
-- p224Mul(&z1z1, &z1z1, &r, &c)
-- p224Sub(y3, &z1z1, &s1)
-- p224Reduce(y3)
--
-- p224CopyConditional(x3, x2, z1IsZero)
-- p224CopyConditional(x3, x1, z2IsZero)
-- p224CopyConditional(y3, y2, z1IsZero)
-- p224CopyConditional(y3, y1, z2IsZero)
-- p224CopyConditional(z3, z2, z1IsZero)
-- p224CopyConditional(z3, z1, z2IsZero)
--}
--
--// p224DoubleJacobian computes *out = a+a.
--func p224DoubleJacobian(x3, y3, z3, x1, y1, z1 *p224FieldElement) {
-- var delta, gamma, beta, alpha, t p224FieldElement
-- var c p224LargeFieldElement
--
-- p224Square(&delta, z1, &c)
-- p224Square(&gamma, y1, &c)
-- p224Mul(&beta, x1, &gamma, &c)
--
-- // alpha = 3*(X1-delta)*(X1+delta)
-- p224Add(&t, x1, &delta)
-- for i := 0; i < 8; i++ {
-- t[i] += t[i] << 1
-- }
-- p224Reduce(&t)
-- p224Sub(&alpha, x1, &delta)
-- p224Reduce(&alpha)
-- p224Mul(&alpha, &alpha, &t, &c)
--
-- // Z3 = (Y1+Z1)-gamma-delta
-- p224Add(z3, y1, z1)
-- p224Reduce(z3)
-- p224Square(z3, z3, &c)
-- p224Sub(z3, z3, &gamma)
-- p224Reduce(z3)
-- p224Sub(z3, z3, &delta)
-- p224Reduce(z3)
--
-- // X3 = alpha-8*beta
-- for i := 0; i < 8; i++ {
-- delta[i] = beta[i] << 3
-- }
-- p224Reduce(&delta)
-- p224Square(x3, &alpha, &c)
-- p224Sub(x3, x3, &delta)
-- p224Reduce(x3)
--
-- // Y3 = alpha*(4*beta-X3)-8*gamma
-- for i := 0; i < 8; i++ {
-- beta[i] <<= 2
-- }
-- p224Sub(&beta, &beta, x3)
-- p224Reduce(&beta)
-- p224Square(&gamma, &gamma, &c)
-- for i := 0; i < 8; i++ {
-- gamma[i] <<= 3
-- }
-- p224Reduce(&gamma)
-- p224Mul(y3, &alpha, &beta, &c)
-- p224Sub(y3, y3, &gamma)
-- p224Reduce(y3)
--}
--
--// p224CopyConditional sets *out = *in iff the least-significant-bit of control
--// is true, and it runs in constant time.
--func p224CopyConditional(out, in *p224FieldElement, control uint32) {
-- control <<= 31
-- control = uint32(int32(control) >> 31)
--
-- for i := 0; i < 8; i++ {
-- out[i] ^= (out[i] ^ in[i]) & control
-- }
--}
--
--func p224ScalarMult(outX, outY, outZ, inX, inY, inZ *p224FieldElement, scalar []byte) {
-- var xx, yy, zz p224FieldElement
-- for i := 0; i < 8; i++ {
-- outX[i] = 0
-- outY[i] = 0
-- outZ[i] = 0
-- }
--
-- for _, byte := range scalar {
-- for bitNum := uint(0); bitNum < 8; bitNum++ {
-- p224DoubleJacobian(outX, outY, outZ, outX, outY, outZ)
-- bit := uint32((byte >> (7 - bitNum)) & 1)
-- p224AddJacobian(&xx, &yy, &zz, inX, inY, inZ, outX, outY, outZ)
-- p224CopyConditional(outX, &xx, bit)
-- p224CopyConditional(outY, &yy, bit)
-- p224CopyConditional(outZ, &zz, bit)
-- }
-- }
--}
--
--// p224ToAffine converts from Jacobian to affine form.
--func p224ToAffine(x, y, z *p224FieldElement) (*big.Int, *big.Int) {
-- var zinv, zinvsq, outx, outy p224FieldElement
-- var tmp p224LargeFieldElement
--
-- if isPointAtInfinity := p224IsZero(z); isPointAtInfinity == 1 {
-- return new(big.Int), new(big.Int)
-- }
--
-- p224Invert(&zinv, z)
-- p224Square(&zinvsq, &zinv, &tmp)
-- p224Mul(x, x, &zinvsq, &tmp)
-- p224Mul(&zinvsq, &zinvsq, &zinv, &tmp)
-- p224Mul(y, y, &zinvsq, &tmp)
--
-- p224Contract(&outx, x)
-- p224Contract(&outy, y)
-- return p224ToBig(&outx), p224ToBig(&outy)
--}
--
--// get28BitsFromEnd returns the least-significant 28 bits from buf>>shift,
--// where buf is interpreted as a big-endian number.
--func get28BitsFromEnd(buf []byte, shift uint) (uint32, []byte) {
-- var ret uint32
--
-- for i := uint(0); i < 4; i++ {
-- var b byte
-- if l := len(buf); l > 0 {
-- b = buf[l-1]
-- // We don't remove the byte if we're about to return and we're not
-- // reading all of it.
-- if i != 3 || shift == 4 {
-- buf = buf[:l-1]
-- }
-- }
-- ret |= uint32(b) << (8 * i) >> shift
-- }
-- ret &= bottom28Bits
-- return ret, buf
--}
--
--// p224FromBig sets *out = *in.
--func p224FromBig(out *p224FieldElement, in *big.Int) {
-- bytes := in.Bytes()
-- out[0], bytes = get28BitsFromEnd(bytes, 0)
-- out[1], bytes = get28BitsFromEnd(bytes, 4)
-- out[2], bytes = get28BitsFromEnd(bytes, 0)
-- out[3], bytes = get28BitsFromEnd(bytes, 4)
-- out[4], bytes = get28BitsFromEnd(bytes, 0)
-- out[5], bytes = get28BitsFromEnd(bytes, 4)
-- out[6], bytes = get28BitsFromEnd(bytes, 0)
-- out[7], bytes = get28BitsFromEnd(bytes, 4)
--}
--
--// p224ToBig returns in as a
big.Int.
--func p224ToBig(in *p224FieldElement) *big.Int {
-- var buf [28]byte
-- buf[27] = byte(in[0])
-- buf[26] = byte(in[0] >> 8)
-- buf[25] = byte(in[0] >> 16)
-- buf[24] = byte(((in[0] >> 24) & 0x0f) | (in[1]<<4)&0xf0)
--
-- buf[23] = byte(in[1] >> 4)
-- buf[22] = byte(in[1] >> 12)
-- buf[21] = byte(in[1] >> 20)
--
-- buf[20] = byte(in[2])
-- buf[19] = byte(in[2] >> 8)
-- buf[18] = byte(in[2] >> 16)
-- buf[17] = byte(((in[2] >> 24) & 0x0f) | (in[3]<<4)&0xf0)
--
-- buf[16] = byte(in[3] >> 4)
-- buf[15] = byte(in[3] >> 12)
-- buf[14] = byte(in[3] >> 20)
--
-- buf[13] = byte(in[4])
-- buf[12] = byte(in[4] >> 8)
-- buf[11] = byte(in[4] >> 16)
-- buf[10] = byte(((in[4] >> 24) & 0x0f) | (in[5]<<4)&0xf0)
--
-- buf[9] = byte(in[5] >> 4)
-- buf[8] = byte(in[5] >> 12)
-- buf[7] = byte(in[5] >> 20)
--
-- buf[6] = byte(in[6])
-- buf[5] = byte(in[6] >> 8)
-- buf[4] = byte(in[6] >> 16)
-- buf[3] = byte(((in[6] >> 24) & 0x0f) | (in[7]<<4)&0xf0)
--
-- buf[2] = byte(in[7] >> 4)
-- buf[1] = byte(in[7] >> 12)
-- buf[0] = byte(in[7] >> 20)
--
-- return new(big.Int).SetBytes(buf[:])
--}
---- libgo/go/crypto/elliptic/p224_test.go.jj 2016-01-15 10:58:09.000000000 +0100
-+++ libgo/go/crypto/elliptic/p224_test.go 2016-02-05 22:36:06.148039280 +0100
-@@ -1,47 +0,0 @@
--// Copyright 2012 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--package elliptic
--
--import (
-- "math/big"
-- "testing"
--)
--
--var toFromBigTests = []string{
-- "0",
-- "1",
-- "23",
-- "b70e0cb46bb4bf7f321390b94a03c1d356c01122343280d6105c1d21",
-- "706a46d476dcb76798e6046d89474788d164c18032d268fd10704fa6",
--}
--
--func p224AlternativeToBig(in *p224FieldElement) *big.Int {
-- ret := new(big.Int)
-- tmp := new(big.Int)
--
-- for i := uint(0); i < 8; i++ {
-- tmp.SetInt64(int64(in[i]))
-- tmp.Lsh(tmp, 28*i)
-- ret.Add(ret, tmp)
-- }
-- ret.Mod(ret, p224.P)
-- return ret
--}
--
--func TestToFromBig(t *testing.T) {
-- for i, test := range toFromBigTests {
-- n, _ := new(big.Int).SetString(test, 16)
-- var x p224FieldElement
-- p224FromBig(&x, n)
-- m := p224ToBig(&x)
-- if n.Cmp(m) != 0 {
-- t.Errorf("#%d: %x != %x", i, n, m)
-- }
-- q := p224AlternativeToBig(&x)
-- if n.Cmp(q) != 0 {
-- t.Errorf("#%d: %x != %x (alternative)", i, n, m)
-- }
-- }
--}
---- libgo/go/crypto/elliptic/p256.go.jj 2016-02-05 20:11:19.000000000 +0100
-+++ libgo/go/crypto/elliptic/p256.go 2016-02-05 22:36:06.148039280 +0100
-@@ -235,6 +235,8 @@ func p256ReduceCarry(inout *[p256Limbs]u
- inout[7] += carry << 25
- }
-
-+const bottom28Bits = 0xfffffff
-+
- // p256Sum sets out = in+in2.
- //
- // On entry, in[i]+in2[i] must not overflow a 32-bit word.
-@@ -267,6 +269,7 @@ const (
- two31m2 = 1<<31 - 1<<2
- two31p24m2 = 1<<31 + 1<<24 - 1<<2
- two30m27m2 = 1<<30 - 1<<27 - 1<<2
-+ two31m3 = 1<<31 - 1<<3
- )
-
- // p256Zero31 is 0 mod p.
diff --git a/gcc6-libgomp-omp_h-multilib.patch b/gcc6-libgomp-omp_h-multilib.patch
deleted file mode 100644
index d0e98d1..0000000
--- a/gcc6-libgomp-omp_h-multilib.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-2008-06-09 Jakub Jelinek <jakub(a)redhat.com>
-
- * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
-
---- libgomp/omp.h.in.jj 2008-06-09 13:34:05.000000000 +0200
-+++ libgomp/omp.h.in 2008-06-09 13:34:48.000000000 +0200
-@@ -42,8 +42,8 @@ typedef struct
-
- typedef struct
- {
-- unsigned char _x[@OMP_NEST_LOCK_SIZE@]
-- __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
-+ unsigned char _x[8 + sizeof (void *)]
-+ __attribute__((__aligned__(sizeof (void *))));
- } omp_nest_lock_t;
- #endif
-
diff --git a/gcc6-libsanitize-aarch64-va42.patch b/gcc6-libsanitize-aarch64-va42.patch
deleted file mode 100644
index 72418df..0000000
--- a/gcc6-libsanitize-aarch64-va42.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-2015-01-22 Jakub Jelinek <jakub(a)redhat.com>
-
- * sanitizer_common/sanitizer_platform.h
- (SANITIZER_AARCH64_VMA): Set to 42.
- (SANITIZER_CAN_USE_ALLOCATOR64): Set to 1 on __aarch64__
- if SANITIZER_WORDSIZE is 64.
- (SANITIZER_MMAP_RANGE_SIZE): Define to 1ULL << 42 for
- __aarch64__.
-
---- libsanitizer/sanitizer_common/sanitizer_platform.h.jj 2015-11-23 13:29:55.000000000
+0100
-+++ libsanitizer/sanitizer_common/sanitizer_platform.h 2016-01-15 12:04:08.511206409
+0100
-@@ -82,7 +82,7 @@
- // VMA size definition for architecture that support multiple sizes.
- // AArch64 has 3 VMA sizes: 39, 42 and 48.
- #if !defined(SANITIZER_AARCH64_VMA)
--# define SANITIZER_AARCH64_VMA 39
-+# define SANITIZER_AARCH64_VMA 42
- #else
- # if SANITIZER_AARCH64_VMA != 39 && SANITIZER_AARCH64_VMA != 42
- # error "invalid SANITIZER_AARCH64_VMA size"
-@@ -95,7 +95,7 @@
- // For such platforms build this code with -DSANITIZER_CAN_USE_ALLOCATOR64=0 or
- // change the definition of SANITIZER_CAN_USE_ALLOCATOR64 here.
- #ifndef SANITIZER_CAN_USE_ALLOCATOR64
--# if defined(__mips64) || defined(__aarch64__)
-+# if defined(__mips64)
- # define SANITIZER_CAN_USE_ALLOCATOR64 0
- # else
- # define SANITIZER_CAN_USE_ALLOCATOR64 (SANITIZER_WORDSIZE == 64)
-@@ -107,6 +107,8 @@
- // will still work but will consume more memory for TwoLevelByteMap.
- #if defined(__mips__)
- # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL <<
40)
-+#elif defined(__aarch64__)
-+# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL <<
42)
- #else
- # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL <<
47)
- #endif
diff --git a/gcc6-libstdc++-docs.patch b/gcc6-libstdc++-docs.patch
deleted file mode 100644
index 057cac0..0000000
--- a/gcc6-libstdc++-docs.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100
-+++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100
-@@ -5,6 +5,8 @@
- <a class="link"
href="http://www.fsf.org/"
target="_top">FSF
- </a>
- </p><p>
-+ Release 6.3.0
-+ </p><p>
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation
- License, Version 1.2 or any later version published by the
---- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100
-+++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100
-@@ -20,7 +20,9 @@
- member functions for the library classes, finding out what is in a
- particular include file, looking at inheritance diagrams, etc.
- </p><p>
-- The API documentation, rendered into HTML, can be viewed online
-+ The API documentation, rendered into HTML, can be viewed locally
-+ <a class="link" href="api/index.html"
target="_top">for the 6.3.0 release</a>,
-+ online
- <a class="link"
href="http://gcc.gnu.org/onlinedocs/"
target="_top">for each GCC release</a>
- and
- <a class="link"
href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.h...
target="_top">
diff --git a/gcc6-libtool-no-rpath.patch b/gcc6-libtool-no-rpath.patch
deleted file mode 100644
index 466c661..0000000
--- a/gcc6-libtool-no-rpath.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-libtool sucks.
---- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100
-+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200
-@@ -5394,6 +5394,7 @@ EOF
- rpath="$finalize_rpath"
- test "$mode" != relink && rpath="$compile_rpath$rpath"
- for libdir in $rpath; do
-+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
-@@ -6071,6 +6072,7 @@ EOF
- rpath=
- hardcode_libdirs=
- for libdir in $compile_rpath $finalize_rpath; do
-+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
-@@ -6120,6 +6122,7 @@ EOF
- rpath=
- hardcode_libdirs=
- for libdir in $finalize_rpath; do
-+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
diff --git a/gcc6-no-add-needed.patch b/gcc6-no-add-needed.patch
deleted file mode 100644
index 4102e1c..0000000
--- a/gcc6-no-add-needed.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-2010-02-08 Roland McGrath <roland(a)redhat.com>
-
- * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
- linker.
- * config/gnu-user.h (LINK_EH_SPEC): Likewise.
- * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
- * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
-
---- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
-+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
-@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu
- I imagine that other systems will catch up. In the meantime, it
- doesn't harm to make sure that the data exists to be used later. */
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
---- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
-+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
-@@ -76,7 +76,7 @@ do { \
- Signalize that because we have fde-glibc, we don't need all C shared libs
- linked against -lgcc_s. */
- #undef LINK_EH_SPEC
--#define LINK_EH_SPEC ""
-+#define LINK_EH_SPEC "--no-add-needed "
-
- #undef TARGET_INIT_LIBFUNCS
- #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
---- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
-+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
-@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI
- #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
-
- #undef LINK_GCC_C_SEQUENCE_SPEC
---- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100
-+++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100
-@@ -820,7 +820,7 @@ extern int fixuplabelno;
- -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
-
- #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
diff --git a/gcc6-ppc32-retaddr.patch b/gcc6-ppc32-retaddr.patch
deleted file mode 100644
index 7e8eeb5..0000000
--- a/gcc6-ppc32-retaddr.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-2005-11-28 Jakub Jelinek <jakub(a)redhat.com>
-
- * config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
- read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
- instead of doing an extran indirection from frame_pointer_rtx.
-
- * gcc.dg/20051128-1.c: New test.
-
---- gcc/config/rs6000/rs6000.c.jj 2005-11-26 14:38:01.000000000 +0100
-+++ gcc/config/rs6000/rs6000.c 2005-11-28 20:32:18.000000000 +0100
-@@ -20970,18 +20970,22 @@ rs6000_return_addr (int count, rtx frame
- if (count != 0
- || ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && flag_pic))
- {
-+ rtx x;
- cfun->machine->ra_needs_full_frame = 1;
-
-- return
-- gen_rtx_MEM
-- (Pmode,
-- memory_address
-- (Pmode,
-- plus_constant (Pmode,
-- copy_to_reg
-- (gen_rtx_MEM (Pmode,
-- memory_address (Pmode, frame))),
-- RETURN_ADDRESS_OFFSET)));
-+ if (count == 0)
-+ {
-+ gcc_assert (frame == frame_pointer_rtx);
-+ x = arg_pointer_rtx;
-+ }
-+ else
-+ {
-+ x = memory_address (Pmode, frame);
-+ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
-+ }
-+
-+ x = plus_constant (Pmode, x, RETURN_ADDRESS_OFFSET);
-+ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
- }
-
- cfun->machine->ra_need_lr = 1;
---- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
-+++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
-@@ -0,0 +1,41 @@
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fpic" } */
-+
-+extern void exit (int);
-+extern void abort (void);
-+
-+int b;
-+
-+struct A
-+{
-+ void *pad[147];
-+ void *ra, *h;
-+ long o;
-+};
-+
-+void
-+__attribute__((noinline))
-+foo (struct A *a, void *x)
-+{
-+ __builtin_memset (a, 0, sizeof (a));
-+ if (!b)
-+ exit (0);
-+}
-+
-+void
-+__attribute__((noinline))
-+bar (void)
-+{
-+ struct A a;
-+
-+ __builtin_unwind_init ();
-+ foo (&a, __builtin_return_address (0));
-+}
-+
-+int
-+main (void)
-+{
-+ bar ();
-+ abort ();
-+ return 0;
-+}
diff --git a/gcc6-rh330771.patch b/gcc6-rh330771.patch
deleted file mode 100644
index 102730f..0000000
--- a/gcc6-rh330771.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-2007-10-16 Jakub Jelinek <jakub(a)redhat.com>
-
- * Makefile.am (libgcj_tools_la_LIBADD): Add.
- * Makefile.in: Regenerated.
-
---- libjava/Makefile.am.jj 2009-05-06 08:14:50.000000000 +0200
-+++ libjava/Makefile.am 2009-05-06 10:26:43.000000000 +0200
-@@ -550,7 +550,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
- $(LIBJAVA_LDFLAGS_LIBMATH)
-
--libgcj_tools_la_LIBADD = libgcj.la
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
- $(libgcj_tools_la_version_dep)
- if BUILD_SUBLIBS
---- libjava/Makefile.in.jj 2009-05-06 08:14:49.000000000 +0200
-+++ libjava/Makefile.in 2009-05-06 10:27:18.000000000 +0200
-@@ -1110,7 +1110,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
- $(LIBJAVA_LDFLAGS_LIBMATH)
-
--libgcj_tools_la_LIBADD = libgcj.la
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
- $(libgcj_tools_la_version_dep) $(am__append_19)
- libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS) \
diff --git a/gcc6-sparc-config-detection.patch b/gcc6-sparc-config-detection.patch
deleted file mode 100644
index a37018e..0000000
--- a/gcc6-sparc-config-detection.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
-+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
-@@ -2656,7 +2656,7 @@ sparc-*-rtems*)
- tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h
rtems.h newlib-stdint.h"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
- ;;
--sparc-*-linux*)
-+sparc-*-linux* | sparcv9-*-linux*)
- tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h
glibc-stdint.h sparc/tso.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- case ${target} in
-@@ -2710,7 +2710,7 @@ sparc64-*-rtems*)
- extra_options="${extra_options}"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
- ;;
--sparc64-*-linux*)
-+sparc64*-*-linux*)
- tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h
linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
---- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
-+++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
-@@ -1002,7 +1002,7 @@ sparc-*-elf*)
- tmake_file="${tmake_file} t-fdpbit t-crtfm"
- extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
- ;;
--sparc-*-linux*) # SPARC's running GNU/Linux, libc6
-+sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6
- tmake_file="${tmake_file} t-crtfm"
- if test "${host_address}" = 64; then
- tmake_file="$tmake_file sparc/t-linux64"
-@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
- tmake_file="$tmake_file t-crtfm"
- extra_parts="$extra_parts crtfastmath.o"
- ;;
--sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
-+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
- extra_parts="$extra_parts crtfastmath.o"
- tmake_file="${tmake_file} t-crtfm sparc/t-linux"
- if test "${host_address}" = 64; then
diff --git a/gcc6-ucontext.patch b/gcc6-ucontext.patch
deleted file mode 100644
index dd6b0f1..0000000
--- a/gcc6-ucontext.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- libgcc/config/i386/linux-unwind.h.x 2017-07-12 18:10:21.531812959 +0200
-+++ libgcc/config/i386/linux-unwind.h 2017-07-12 18:11:03.106011137 +0200
-@@ -58,7 +58,7 @@
- if (*(unsigned char *)(pc+0) == 0x48
- && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
- {
-- struct ucontext *uc_ = context->cfa;
-+ ucontext_t *uc_ = context->cfa;
- /* The void * cast is necessary to avoid an aliasing warning.
- The aliasing warning is correct, but should not be a problem
- because it does not alias anything. */
-@@ -138,7 +138,7 @@
- siginfo_t *pinfo;
- void *puc;
- siginfo_t info;
-- struct ucontext uc;
-+ ucontext_t uc;
- } *rt_ = context->cfa;
- /* The void * cast is necessary to avoid an aliasing warning.
- The aliasing warning is correct, but should not be a problem
---- libgcc/config/aarch64/linux-unwind.h.x 2017-07-12 19:29:07.830098788 +0200
-+++ libgcc/config/aarch64/linux-unwind.h 2017-07-12 19:29:28.772691533 +0200
-@@ -52,7 +52,7 @@
- struct rt_sigframe
- {
- siginfo_t info;
-- struct ucontext uc;
-+ ucontext_t uc;
- };
-
- struct rt_sigframe *rt_;
diff --git a/gcc8-Wno-format-security.patch b/gcc8-Wno-format-security.patch
new file mode 100644
index 0000000..cb21e5d
--- /dev/null
+++ b/gcc8-Wno-format-security.patch
@@ -0,0 +1,27 @@
+2017-02-25 Jakub Jelinek <jakub(a)redhat.com>
+
+ * configure.ac: When adding -Wno-format, also add -Wno-format-security.
+ * configure: Regenerated.
+
+--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100
++++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100
+@@ -481,7 +481,7 @@ AC_ARG_ENABLE(build-format-warnings,
+ AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while
building GCC]),
+ [],[enable_build_format_warnings=yes])
+ AS_IF([test $enable_build_format_warnings = no],
+- [wf_opt=-Wno-format],[wf_opt=])
++ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
+ ACX_PROG_CXX_WARNING_OPTS(
+ m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
+ [-Wcast-qual $wf_opt])), [loose_warn])
+--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100
++++ gcc/configure 2017-02-25 12:42:50.041946391 +0100
+@@ -6647,7 +6647,7 @@ else
+ fi
+
+ if test $enable_build_format_warnings = no; then :
+- wf_opt=-Wno-format
++ wf_opt="-Wno-format -Wno-format-security"
+ else
+ wf_opt=
+ fi
diff --git a/gcc8-foffload-default.patch b/gcc8-foffload-default.patch
new file mode 100644
index 0000000..771e1e0
--- /dev/null
+++ b/gcc8-foffload-default.patch
@@ -0,0 +1,117 @@
+2017-01-20 Jakub Jelinek <jakub(a)redhat.com>
+
+ * gcc.c (offload_targets_default): New variable.
+ (process_command): Set it if -foffload is defaulted.
+ (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
+ into environment if -foffload has been defaulted.
+ * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
+ (compile_images_for_offload_targets): If OFFLOAD_TARGET_DEFAULT
+ is in the environment, don't fail if corresponding mkoffload
+ can't be found. Free and clear offload_names if no valid offload
+ is found.
+libgomp/
+ * target.c (gomp_load_plugin_for_device): If a plugin can't be
+ dlopened, assume it has no devices silently.
+
+--- gcc/gcc.c.jj 2017-01-17 10:28:40.000000000 +0100
++++ gcc/gcc.c 2017-01-20 16:26:29.649962902 +0100
+@@ -290,6 +290,10 @@ static const char *spec_host_machine = D
+
+ static char *offload_targets = NULL;
+
++/* Set to true if -foffload has not been used and offload_targets
++ is set to the configured in default. */
++static bool offload_targets_default;
++
+ /* Nonzero if cross-compiling.
+ When -b is used, the value comes from the `specs' file. */
+
+@@ -4457,7 +4461,10 @@ process_command (unsigned int decoded_op
+ /* If the user didn't specify any, default to all configured offload
+ targets. */
+ if (ENABLE_OFFLOADING && offload_targets == NULL)
+- handle_foffload_option (OFFLOAD_TARGETS);
++ {
++ handle_foffload_option (OFFLOAD_TARGETS);
++ offload_targets_default = true;
++ }
+
+ if (output_file
+ && strcmp (output_file, "-") != 0
+@@ -7693,6 +7700,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS ()
+ obstack_grow (&collect_obstack, offload_targets,
+ strlen (offload_targets) + 1);
+ xputenv (XOBFINISH (&collect_obstack, char *));
++ if (offload_targets_default)
++ xputenv ("OFFLOAD_TARGET_DEFAULT=1");
+ }
+
+ free (offload_targets);
+--- gcc/lto-wrapper.c.jj 2017-01-01 12:45:34.000000000 +0100
++++ gcc/lto-wrapper.c 2017-01-20 16:34:18.294016997 +0100
+@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3.
+ /* Environment variable, used for passing the names of offload targets from GCC
+ driver to lto-wrapper. */
+ #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES"
++#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT"
+
+ enum lto_mode_d {
+ LTO_MODE_NONE, /* Not doing LTO. */
+@@ -790,8 +791,10 @@ compile_images_for_offload_targets (unsi
+ if (!target_names)
+ return;
+ unsigned num_targets = parse_env_var (target_names, &names, NULL);
++ const char *target_names_default = getenv (OFFLOAD_TARGET_DEFAULT_ENV);
+
+ int next_name_entry = 0;
++ bool hsa_seen = false;
+ const char *compiler_path = getenv ("COMPILER_PATH");
+ if (!compiler_path)
+ goto out;
+@@ -804,18 +807,32 @@ compile_images_for_offload_targets (unsi
+ /* HSA does not use LTO-like streaming and a different compiler, skip
+ it. */
+ if (strcmp (names[i], "hsa") == 0)
+- continue;
++ {
++ hsa_seen = true;
++ continue;
++ }
+
+ offload_names[next_name_entry]
+ = compile_offload_image (names[i], compiler_path, in_argc, in_argv,
+ compiler_opts, compiler_opt_count,
+ linker_opts, linker_opt_count);
+ if (!offload_names[next_name_entry])
+- fatal_error (input_location,
+- "problem with building target image for %s\n", names[i]);
++ {
++ if (target_names_default != NULL)
++ continue;
++ fatal_error (input_location,
++ "problem with building target image for %s\n",
++ names[i]);
++ }
+ next_name_entry++;
+ }
+
++ if (next_name_entry == 0 && !hsa_seen)
++ {
++ free (offload_names);
++ offload_names = NULL;
++ }
++
+ out:
+ free_array_of_ptrs ((void **) names, num_targets);
+ }
+--- libgomp/target.c.jj 2017-01-01 12:45:52.000000000 +0100
++++ libgomp/target.c 2017-01-20 20:12:13.756710875 +0100
+@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp
+
+ void *plugin_handle = dlopen (plugin_name, RTLD_LAZY);
+ if (!plugin_handle)
+- goto dl_fail;
++ return 0;
+
+ /* Check if all required functions are available in the plugin and store
+ their handlers. None of the symbols can legitimately be NULL,
diff --git a/gcc8-hack.patch b/gcc8-hack.patch
new file mode 100644
index 0000000..515173f
--- /dev/null
+++ b/gcc8-hack.patch
@@ -0,0 +1,124 @@
+--- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
++++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
+@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
+ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+ ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
+
++DEFAULTMULTIFLAGS :=
++ifeq ($(MULTISUBDIR),)
++targ:=$(subst -, ,$(target))
++arch:=$(word 1,$(targ))
++ifeq ($(words $(targ)),2)
++osys:=$(word 2,$(targ))
++else
++osys:=$(word 3,$(targ))
++endif
++ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch)
$(osys))),)
++ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
++DEFAULTMULTIFLAGS := -m64
++else
++ifeq ($(strip $(filter-out s390%, $(arch))),)
++DEFAULTMULTIFLAGS := -m31
++else
++DEFAULTMULTIFLAGS := -m32
++endif
++endif
++endif
++endif
++
+ # exeext should not be used because it's the *host* exeext. We're building
+ # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
+ # definitions just in case something slips through the safety net provided
+ # by recursive make invocations in gcc/ada/Makefile.in
+ LIBADA_FLAGS_TO_PASS = \
+ "MAKEOVERRIDES=" \
+- "LDFLAGS=$(LDFLAGS)" \
++ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
+ "LN_S=$(LN_S)" \
+ "SHELL=$(SHELL)" \
+- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
+- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
+- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)
$(DEFAULTMULTIFLAGS)" \
+ "PICFLAG_FOR_TARGET=$(PICFLAG)" \
+ "THREAD_KIND=$(THREAD_KIND)" \
+ "TRACE=$(TRACE)" \
+@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
+ "exeext=.exeext.should.not.be.used " \
+ 'CC=the.host.compiler.should.not.be.needed' \
+ "GCC_FOR_TARGET=$(CC)" \
+- "CFLAGS=$(CFLAGS)"
++ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
+
+ # Rules to build gnatlib.
+ .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
+--- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
++++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
+@@ -511,6 +511,8 @@ multi-do:
+ ADAFLAGS="$(ADAFLAGS) $${flags}" \
+ prefix="$(prefix)" \
+ exec_prefix="$(exec_prefix)" \
++ mandir="$(mandir)" \
++ infodir="$(infodir)" \
+ GOCFLAGS="$(GOCFLAGS) $${flags}" \
+ CXXFLAGS="$(CXXFLAGS) $${flags}" \
+ LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
+--- libcpp/macro.c.jj 2015-01-14 11:01:34.000000000 +0100
++++ libcpp/macro.c 2015-01-14 14:22:19.286949884 +0100
+@@ -2947,8 +2947,6 @@ create_iso_definition (cpp_reader *pfile
+ cpp_token *token;
+ const cpp_token *ctoken;
+ bool following_paste_op = false;
+- const char *paste_op_error_msg =
+- N_("'##' cannot appear at either end of a macro expansion");
+ unsigned int num_extra_tokens = 0;
+
+ /* Get the first token of the expansion (or the '(' of a
+@@ -3059,7 +3057,8 @@ create_iso_definition (cpp_reader *pfile
+ function-like macros, but not at the end. */
+ if (following_paste_op)
+ {
+- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++ cpp_error (pfile, CPP_DL_ERROR,
++ "'##' cannot appear at either end of a macro expansion");
+ return false;
+ }
+ break;
+@@ -3072,7 +3071,8 @@ create_iso_definition (cpp_reader *pfile
+ function-like macros, but not at the beginning. */
+ if (macro->count == 1)
+ {
+- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++ cpp_error (pfile, CPP_DL_ERROR,
++ "'##' cannot appear at either end of a macro expansion");
+ return false;
+ }
+
+--- libcpp/expr.c.jj 2015-01-14 11:01:34.000000000 +0100
++++ libcpp/expr.c 2015-01-14 14:35:52.851002344 +0100
+@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
+ if ((result & CPP_N_WIDTH) == CPP_N_LARGE
+ && CPP_OPTION (pfile, cpp_warn_long_long))
+ {
+- const char *message = CPP_OPTION (pfile, cplusplus)
+- ? N_("use of C++11 long long integer constant")
+- : N_("use of C99 long long integer constant");
+-
+ if (CPP_OPTION (pfile, c99))
+ cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
+- 0, message);
++ 0, CPP_OPTION (pfile, cplusplus)
++ ? N_("use of C++11 long long integer constant")
++ : N_("use of C99 long long integer constant"));
+ else
+ cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
+- virtual_location, 0, message);
++ virtual_location, 0,
++ CPP_OPTION (pfile, cplusplus)
++ ? N_("use of C++11 long long integer constant")
++ : N_("use of C99 long long integer constant"));
+ }
+
+ result |= CPP_N_INTEGER;
diff --git a/gcc8-i386-libgomp.patch b/gcc8-i386-libgomp.patch
new file mode 100644
index 0000000..520561e
--- /dev/null
+++ b/gcc8-i386-libgomp.patch
@@ -0,0 +1,11 @@
+--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
++++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
+@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
+ ;;
+ *)
+ if test -z "$with_arch"; then
+- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ fi
+ esac
+ ;;
diff --git a/gcc8-isl-dl.patch b/gcc8-isl-dl.patch
new file mode 100644
index 0000000..46d3b0d
--- /dev/null
+++ b/gcc8-isl-dl.patch
@@ -0,0 +1,715 @@
+--- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
++++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
+@@ -1046,7 +1046,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+ # and the system's installed libraries.
+ LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
+ $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
+-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+ $(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -2196,6 +2196,15 @@ $(out_object_file): $(out_file)
+ $(common_out_object_file): $(common_out_file)
+ $(COMPILE) $<
+ $(POSTCOMPILE)
++
++graphite%.o : \
++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite.o : \
++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite%.o : \
++ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
++graphite.o : \
++ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
+ #
+ # Generate header and source files from the machine description,
+ # and compile them.
+--- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
++++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
+@@ -39,6 +39,590 @@ along with GCC; see the file COPYING3.
+ #include <isl/schedule_node.h>
+ #include <isl/id.h>
+ #include <isl/space.h>
++#include <isl/version.h>
++#include <dlfcn.h>
++
++#define DYNSYMS \
++ DYNSYM (isl_aff_add_coefficient_si); \
++ DYNSYM (isl_aff_free); \
++ DYNSYM (isl_aff_get_space); \
++ DYNSYM (isl_aff_set_coefficient_si); \
++ DYNSYM (isl_aff_set_constant_si); \
++ DYNSYM (isl_aff_zero_on_domain); \
++ DYNSYM (isl_band_free); \
++ DYNSYM (isl_band_get_children); \
++ DYNSYM (isl_band_get_partial_schedule); \
++ DYNSYM (isl_band_has_children); \
++ DYNSYM (isl_band_list_free); \
++ DYNSYM (isl_band_list_get_band); \
++ DYNSYM (isl_band_list_get_ctx); \
++ DYNSYM (isl_band_list_n_band); \
++ DYNSYM (isl_band_n_member); \
++ DYNSYM (isl_basic_map_add_constraint); \
++ DYNSYM (isl_basic_map_project_out); \
++ DYNSYM (isl_basic_map_universe); \
++ DYNSYM (isl_constraint_set_coefficient_si); \
++ DYNSYM (isl_constraint_set_constant_si); \
++ DYNSYM (isl_ctx_alloc); \
++ DYNSYM (isl_ctx_free); \
++ DYNSYM (isl_equality_alloc); \
++ DYNSYM (isl_id_alloc); \
++ DYNSYM (isl_id_copy); \
++ DYNSYM (isl_id_free); \
++ DYNSYM (isl_inequality_alloc); \
++ DYNSYM (isl_local_space_copy); \
++ DYNSYM (isl_local_space_free); \
++ DYNSYM (isl_local_space_from_space); \
++ DYNSYM (isl_local_space_range); \
++ DYNSYM (isl_map_add_constraint); \
++ DYNSYM (isl_map_add_dims); \
++ DYNSYM (isl_map_align_params); \
++ DYNSYM (isl_map_apply_range); \
++ DYNSYM (isl_map_copy); \
++ DYNSYM (isl_map_dim); \
++ DYNSYM (isl_map_dump); \
++ DYNSYM (isl_map_equate); \
++ DYNSYM (isl_map_fix_si); \
++ DYNSYM (isl_map_flat_product); \
++ DYNSYM (isl_map_flat_range_product); \
++ DYNSYM (isl_map_free); \
++ DYNSYM (isl_map_from_basic_map); \
++ DYNSYM (isl_map_from_pw_aff); \
++ DYNSYM (isl_map_from_union_map); \
++ DYNSYM (isl_map_get_ctx); \
++ DYNSYM (isl_map_get_space); \
++ DYNSYM (isl_map_get_tuple_id); \
++ DYNSYM (isl_map_insert_dims); \
++ DYNSYM (isl_map_intersect); \
++ DYNSYM (isl_map_intersect_domain); \
++ DYNSYM (isl_map_intersect_range); \
++ DYNSYM (isl_map_is_empty); \
++ DYNSYM (isl_map_lex_ge); \
++ DYNSYM (isl_map_lex_le); \
++ DYNSYM (isl_map_n_out); \
++ DYNSYM (isl_map_range); \
++ DYNSYM (isl_map_set_tuple_id); \
++ DYNSYM (isl_map_universe); \
++ DYNSYM (isl_options_set_on_error); \
++ DYNSYM (isl_options_set_schedule_serialize_sccs); \
++ DYNSYM (isl_printer_set_yaml_style); \
++ DYNSYM (isl_options_set_schedule_max_constant_term); \
++ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
++ DYNSYM (isl_printer_free); \
++ DYNSYM (isl_printer_print_aff); \
++ DYNSYM (isl_printer_print_constraint); \
++ DYNSYM (isl_printer_print_map); \
++ DYNSYM (isl_printer_print_set); \
++ DYNSYM (isl_printer_to_file); \
++ DYNSYM (isl_pw_aff_add); \
++ DYNSYM (isl_pw_aff_alloc); \
++ DYNSYM (isl_pw_aff_copy); \
++ DYNSYM (isl_pw_aff_eq_set); \
++ DYNSYM (isl_pw_aff_free); \
++ DYNSYM (isl_pw_aff_from_aff); \
++ DYNSYM (isl_pw_aff_ge_set); \
++ DYNSYM (isl_pw_aff_gt_set); \
++ DYNSYM (isl_pw_aff_is_cst); \
++ DYNSYM (isl_pw_aff_le_set); \
++ DYNSYM (isl_pw_aff_lt_set); \
++ DYNSYM (isl_pw_aff_mul); \
++ DYNSYM (isl_pw_aff_ne_set); \
++ DYNSYM (isl_pw_aff_nonneg_set); \
++ DYNSYM (isl_pw_aff_set_tuple_id); \
++ DYNSYM (isl_pw_aff_sub); \
++ DYNSYM (isl_pw_aff_zero_set); \
++ DYNSYM (isl_schedule_free); \
++ DYNSYM (isl_schedule_get_band_forest); \
++ DYNSYM (isl_set_add_constraint); \
++ DYNSYM (isl_set_add_dims); \
++ DYNSYM (isl_set_apply); \
++ DYNSYM (isl_set_coalesce); \
++ DYNSYM (isl_set_copy); \
++ DYNSYM (isl_set_dim); \
++ DYNSYM (isl_set_fix_si); \
++ DYNSYM (isl_set_free); \
++ DYNSYM (isl_set_get_space); \
++ DYNSYM (isl_set_get_tuple_id); \
++ DYNSYM (isl_set_intersect); \
++ DYNSYM (isl_set_is_empty); \
++ DYNSYM (isl_set_n_dim); \
++ DYNSYM (isl_set_nat_universe); \
++ DYNSYM (isl_set_project_out); \
++ DYNSYM (isl_set_set_tuple_id); \
++ DYNSYM (isl_set_universe); \
++ DYNSYM (isl_space_add_dims); \
++ DYNSYM (isl_space_alloc); \
++ DYNSYM (isl_space_copy); \
++ DYNSYM (isl_space_dim); \
++ DYNSYM (isl_space_domain); \
++ DYNSYM (isl_space_find_dim_by_id); \
++ DYNSYM (isl_space_free); \
++ DYNSYM (isl_space_from_domain); \
++ DYNSYM (isl_space_get_tuple_id); \
++ DYNSYM (isl_space_params_alloc); \
++ DYNSYM (isl_space_range); \
++ DYNSYM (isl_space_set_alloc); \
++ DYNSYM (isl_space_set_dim_id); \
++ DYNSYM (isl_space_set_tuple_id); \
++ DYNSYM (isl_union_map_add_map); \
++ DYNSYM (isl_union_map_align_params); \
++ DYNSYM (isl_union_map_apply_domain); \
++ DYNSYM (isl_union_map_apply_range); \
++ DYNSYM (isl_union_map_compute_flow); \
++ DYNSYM (isl_union_map_copy); \
++ DYNSYM (isl_union_map_empty); \
++ DYNSYM (isl_union_map_flat_range_product); \
++ DYNSYM (isl_union_map_foreach_map); \
++ DYNSYM (isl_union_map_free); \
++ DYNSYM (isl_union_map_from_map); \
++ DYNSYM (isl_union_map_get_ctx); \
++ DYNSYM (isl_union_map_get_space); \
++ DYNSYM (isl_union_map_gist_domain); \
++ DYNSYM (isl_union_map_gist_range); \
++ DYNSYM (isl_union_map_intersect_domain); \
++ DYNSYM (isl_union_map_is_empty); \
++ DYNSYM (isl_union_map_subtract); \
++ DYNSYM (isl_union_map_union); \
++ DYNSYM (isl_union_set_add_set); \
++ DYNSYM (isl_union_set_compute_schedule); \
++ DYNSYM (isl_union_set_copy); \
++ DYNSYM (isl_union_set_empty); \
++ DYNSYM (isl_union_set_from_set); \
++ DYNSYM (isl_aff_add_constant_val); \
++ DYNSYM (isl_aff_get_coefficient_val); \
++ DYNSYM (isl_aff_get_ctx); \
++ DYNSYM (isl_aff_mod_val); \
++ DYNSYM (isl_ast_build_ast_from_schedule); \
++ DYNSYM (isl_ast_build_free); \
++ DYNSYM (isl_ast_build_from_context); \
++ DYNSYM (isl_ast_build_get_ctx); \
++ DYNSYM (isl_ast_build_get_schedule); \
++ DYNSYM (isl_ast_build_get_schedule_space); \
++ DYNSYM (isl_ast_build_set_before_each_for); \
++ DYNSYM (isl_ast_build_set_options); \
++ DYNSYM (isl_ast_expr_free); \
++ DYNSYM (isl_ast_expr_from_val); \
++ DYNSYM (isl_ast_expr_get_ctx); \
++ DYNSYM (isl_ast_expr_get_id); \
++ DYNSYM (isl_ast_expr_get_op_arg); \
++ DYNSYM (isl_ast_expr_get_op_n_arg); \
++ DYNSYM (isl_ast_expr_get_op_type); \
++ DYNSYM (isl_ast_expr_get_type); \
++ DYNSYM (isl_ast_expr_get_val); \
++ DYNSYM (isl_ast_expr_sub); \
++ DYNSYM (isl_ast_node_block_get_children); \
++ DYNSYM (isl_ast_node_for_get_body); \
++ DYNSYM (isl_ast_node_for_get_cond); \
++ DYNSYM (isl_ast_node_for_get_inc); \
++ DYNSYM (isl_ast_node_for_get_init); \
++ DYNSYM (isl_ast_node_for_get_iterator); \
++ DYNSYM (isl_ast_node_free); \
++ DYNSYM (isl_ast_node_get_annotation); \
++ DYNSYM (isl_ast_node_get_type); \
++ DYNSYM (isl_ast_node_if_get_cond); \
++ DYNSYM (isl_ast_node_if_get_else); \
++ DYNSYM (isl_ast_node_if_get_then); \
++ DYNSYM (isl_ast_node_list_free); \
++ DYNSYM (isl_ast_node_list_get_ast_node); \
++ DYNSYM (isl_ast_node_list_n_ast_node); \
++ DYNSYM (isl_ast_node_user_get_expr); \
++ DYNSYM (isl_constraint_set_coefficient_val); \
++ DYNSYM (isl_constraint_set_constant_val); \
++ DYNSYM (isl_id_get_user); \
++ DYNSYM (isl_local_space_get_ctx); \
++ DYNSYM (isl_map_fix_val); \
++ DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
++ DYNSYM (isl_printer_print_ast_node); \
++ DYNSYM (isl_printer_print_str); \
++ DYNSYM (isl_printer_set_output_format); \
++ DYNSYM (isl_pw_aff_mod_val); \
++ DYNSYM (isl_schedule_constraints_compute_schedule); \
++ DYNSYM (isl_schedule_constraints_on_domain); \
++ DYNSYM (isl_schedule_constraints_set_coincidence); \
++ DYNSYM (isl_schedule_constraints_set_proximity); \
++ DYNSYM (isl_schedule_constraints_set_validity); \
++ DYNSYM (isl_set_get_dim_id); \
++ DYNSYM (isl_set_max_val); \
++ DYNSYM (isl_set_min_val); \
++ DYNSYM (isl_set_params); \
++ DYNSYM (isl_space_align_params); \
++ DYNSYM (isl_space_map_from_domain_and_range); \
++ DYNSYM (isl_space_set_tuple_name); \
++ DYNSYM (isl_space_wrap); \
++ DYNSYM (isl_union_map_from_domain_and_range); \
++ DYNSYM (isl_union_map_range); \
++ DYNSYM (isl_union_set_union); \
++ DYNSYM (isl_union_set_universe); \
++ DYNSYM (isl_val_2exp); \
++ DYNSYM (isl_val_add_ui); \
++ DYNSYM (isl_val_copy); \
++ DYNSYM (isl_val_free); \
++ DYNSYM (isl_val_int_from_si); \
++ DYNSYM (isl_val_int_from_ui); \
++ DYNSYM (isl_val_mul); \
++ DYNSYM (isl_val_neg); \
++ DYNSYM (isl_val_sub); \
++ DYNSYM (isl_printer_print_union_map); \
++ DYNSYM (isl_pw_aff_get_ctx); \
++ DYNSYM (isl_val_is_int); \
++ DYNSYM (isl_ctx_get_max_operations); \
++ DYNSYM (isl_ctx_set_max_operations); \
++ DYNSYM (isl_ctx_last_error); \
++ DYNSYM (isl_ctx_reset_operations); \
++ DYNSYM (isl_map_coalesce); \
++ DYNSYM (isl_printer_print_schedule); \
++ DYNSYM (isl_set_set_dim_id); \
++ DYNSYM (isl_union_map_coalesce); \
++ DYNSYM (isl_multi_val_set_val); \
++ DYNSYM (isl_multi_val_zero); \
++ DYNSYM (isl_options_set_schedule_max_coefficient); \
++ DYNSYM (isl_options_set_tile_scale_tile_loops); \
++ DYNSYM (isl_schedule_copy); \
++ DYNSYM (isl_schedule_get_map); \
++ DYNSYM (isl_schedule_map_schedule_node_bottom_up); \
++ DYNSYM (isl_schedule_node_band_get_permutable); \
++ DYNSYM (isl_schedule_node_band_get_space); \
++ DYNSYM (isl_schedule_node_band_tile); \
++ DYNSYM (isl_schedule_node_child); \
++ DYNSYM (isl_schedule_node_free); \
++ DYNSYM (isl_schedule_node_get_child); \
++ DYNSYM (isl_schedule_node_get_ctx); \
++ DYNSYM (isl_schedule_node_get_type); \
++ DYNSYM (isl_schedule_node_n_children); \
++ DYNSYM (isl_union_map_is_equal); \
++ DYNSYM (isl_union_access_info_compute_flow); \
++ DYNSYM (isl_union_access_info_from_sink); \
++ DYNSYM (isl_union_access_info_set_may_source); \
++ DYNSYM (isl_union_access_info_set_must_source); \
++ DYNSYM (isl_union_access_info_set_schedule); \
++ DYNSYM (isl_union_flow_free); \
++ DYNSYM (isl_union_flow_get_may_dependence); \
++ DYNSYM (isl_union_flow_get_must_dependence); \
++ DYNSYM (isl_aff_var_on_domain); \
++ DYNSYM (isl_multi_aff_from_aff); \
++ DYNSYM (isl_schedule_get_ctx); \
++ DYNSYM (isl_multi_aff_set_tuple_id); \
++ DYNSYM (isl_multi_aff_dim); \
++ DYNSYM (isl_schedule_get_domain); \
++ DYNSYM (isl_union_set_is_empty); \
++ DYNSYM (isl_union_set_get_space); \
++ DYNSYM (isl_union_pw_multi_aff_empty); \
++ DYNSYM (isl_union_set_foreach_set); \
++ DYNSYM (isl_union_set_free); \
++ DYNSYM (isl_multi_union_pw_aff_from_union_pw_multi_aff); \
++ DYNSYM (isl_multi_union_pw_aff_apply_multi_aff); \
++ DYNSYM (isl_schedule_insert_partial_schedule); \
++ DYNSYM (isl_union_pw_multi_aff_free); \
++ DYNSYM (isl_pw_multi_aff_project_out_map); \
++ DYNSYM (isl_union_pw_multi_aff_add_pw_multi_aff); \
++ DYNSYM (isl_schedule_from_domain); \
++ DYNSYM (isl_schedule_sequence); \
++ DYNSYM (isl_ast_build_node_from_schedule); \
++ DYNSYM (isl_ast_node_mark_get_node); \
++ DYNSYM (isl_schedule_node_band_member_get_ast_loop_type); \
++ DYNSYM (isl_schedule_node_band_member_set_ast_loop_type); \
++ DYNSYM (isl_val_n_abs_num_chunks); \
++ DYNSYM (isl_val_get_abs_num_chunks); \
++ DYNSYM (isl_val_int_from_chunks); \
++ DYNSYM (isl_val_is_neg); \
++ DYNSYM (isl_version); \
++ DYNSYM (isl_options_get_on_error); \
++ DYNSYM (isl_ctx_reset_error);
++
++extern struct isl_pointers_s__
++{
++ bool inited;
++ void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++ DYNSYMS
++#undef DYNSYM
++} isl_pointers__;
++
++#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
++#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
++#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
++#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
++#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
++#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
++#define isl_band_free (*isl_pointers__.p_isl_band_free)
++#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
++#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
++#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
++#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
++#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
++#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
++#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
++#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
++#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
++#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
++#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
++#define isl_constraint_set_coefficient_si
(*isl_pointers__.p_isl_constraint_set_coefficient_si)
++#define isl_constraint_set_constant_si
(*isl_pointers__.p_isl_constraint_set_constant_si)
++#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
++#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
++#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
++#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
++#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
++#define isl_id_free (*isl_pointers__.p_isl_id_free)
++#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
++#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
++#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
++#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
++#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
++#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
++#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
++#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
++#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
++#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
++#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
++#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
++#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
++#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
++#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
++#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
++#define isl_map_free (*isl_pointers__.p_isl_map_free)
++#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
++#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
++#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
++#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
++#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
++#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
++#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
++#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
++#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
++#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
++#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
++#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
++#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
++#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
++#define isl_map_range (*isl_pointers__.p_isl_map_range)
++#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
++#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
++#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
++#define isl_options_set_schedule_serialize_sccs
(*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
++#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
++#define isl_options_set_schedule_max_constant_term
(*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
++#define isl_options_set_schedule_maximize_band_depth
(*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
++#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
++#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
++#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
++#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
++#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
++#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
++#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
++#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
++#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
++#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
++#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
++#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
++#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
++#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
++#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
++#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
++#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
++#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
++#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
++#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
++#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
++#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
++#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
++#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
++#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
++#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
++#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
++#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
++#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
++#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
++#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
++#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
++#define isl_set_free (*isl_pointers__.p_isl_set_free)
++#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
++#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
++#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
++#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
++#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
++#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
++#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
++#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
++#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
++#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
++#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
++#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
++#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
++#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
++#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
++#define isl_space_free (*isl_pointers__.p_isl_space_free)
++#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
++#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
++#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
++#define isl_space_range (*isl_pointers__.p_isl_space_range)
++#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
++#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
++#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
++#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
++#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
++#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
++#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
++#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
++#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
++#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
++#define isl_union_map_flat_range_product
(*isl_pointers__.p_isl_union_map_flat_range_product)
++#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
++#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
++#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
++#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
++#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
++#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
++#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
++#define isl_union_map_intersect_domain
(*isl_pointers__.p_isl_union_map_intersect_domain)
++#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
++#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
++#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
++#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
++#define isl_union_set_compute_schedule
(*isl_pointers__.p_isl_union_set_compute_schedule)
++#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
++#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
++#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
++#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
++#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
++#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
++#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
++#define isl_ast_build_ast_from_schedule
(*isl_pointers__.p_isl_ast_build_ast_from_schedule)
++#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
++#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
++#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
++#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
++#define isl_ast_build_get_schedule_space
(*isl_pointers__.p_isl_ast_build_get_schedule_space)
++#define isl_ast_build_set_before_each_for
(*isl_pointers__.p_isl_ast_build_set_before_each_for)
++#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
++#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
++#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
++#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
++#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
++#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
++#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
++#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
++#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
++#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
++#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
++#define isl_ast_node_block_get_children
(*isl_pointers__.p_isl_ast_node_block_get_children)
++#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
++#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
++#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
++#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
++#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
++#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
++#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
++#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
++#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
++#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
++#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
++#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
++#define isl_ast_node_list_get_ast_node
(*isl_pointers__.p_isl_ast_node_list_get_ast_node)
++#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
++#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
++#define isl_constraint_set_coefficient_val
(*isl_pointers__.p_isl_constraint_set_coefficient_val)
++#define isl_constraint_set_constant_val
(*isl_pointers__.p_isl_constraint_set_constant_val)
++#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
++#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
++#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
++#define isl_options_set_ast_build_atomic_upper_bound
(*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
++#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
++#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
++#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
++#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
++#define isl_schedule_constraints_compute_schedule
(*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
++#define isl_schedule_constraints_on_domain
(*isl_pointers__.p_isl_schedule_constraints_on_domain)
++#define isl_schedule_constraints_set_coincidence
(*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
++#define isl_schedule_constraints_set_proximity
(*isl_pointers__.p_isl_schedule_constraints_set_proximity)
++#define isl_schedule_constraints_set_validity
(*isl_pointers__.p_isl_schedule_constraints_set_validity)
++#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
++#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
++#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
++#define isl_set_params (*isl_pointers__.p_isl_set_params)
++#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
++#define isl_space_map_from_domain_and_range
(*isl_pointers__.p_isl_space_map_from_domain_and_range)
++#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
++#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
++#define isl_union_map_from_domain_and_range
(*isl_pointers__.p_isl_union_map_from_domain_and_range)
++#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
++#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
++#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
++#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
++#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
++#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
++#define isl_val_free (*isl_pointers__.p_isl_val_free)
++#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
++#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
++#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
++#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
++#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
++#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
++#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
++#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
++#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
++#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
++#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
++#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
++#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
++#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
++#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
++#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
++#define isl_multi_val_set_val (*isl_pointers__.p_isl_multi_val_set_val)
++#define isl_multi_val_zero (*isl_pointers__.p_isl_multi_val_zero)
++#define isl_options_set_schedule_max_coefficient
(*isl_pointers__.p_isl_options_set_schedule_max_coefficient)
++#define isl_options_set_tile_scale_tile_loops
(*isl_pointers__.p_isl_options_set_tile_scale_tile_loops)
++#define isl_schedule_copy (*isl_pointers__.p_isl_schedule_copy)
++#define isl_schedule_get_map (*isl_pointers__.p_isl_schedule_get_map)
++#define isl_schedule_map_schedule_node_bottom_up
(*isl_pointers__.p_isl_schedule_map_schedule_node_bottom_up)
++#define isl_schedule_node_band_get_permutable
(*isl_pointers__.p_isl_schedule_node_band_get_permutable)
++#define isl_schedule_node_band_get_space
(*isl_pointers__.p_isl_schedule_node_band_get_space)
++#define isl_schedule_node_band_tile (*isl_pointers__.p_isl_schedule_node_band_tile)
++#define isl_schedule_node_child (*isl_pointers__.p_isl_schedule_node_child)
++#define isl_schedule_node_free (*isl_pointers__.p_isl_schedule_node_free)
++#define isl_schedule_node_get_child (*isl_pointers__.p_isl_schedule_node_get_child)
++#define isl_schedule_node_get_ctx (*isl_pointers__.p_isl_schedule_node_get_ctx)
++#define isl_schedule_node_get_type (*isl_pointers__.p_isl_schedule_node_get_type)
++#define isl_schedule_node_n_children (*isl_pointers__.p_isl_schedule_node_n_children)
++#define isl_union_map_is_equal (*isl_pointers__.p_isl_union_map_is_equal)
++#define isl_union_access_info_compute_flow
(*isl_pointers__.p_isl_union_access_info_compute_flow)
++#define isl_union_access_info_from_sink
(*isl_pointers__.p_isl_union_access_info_from_sink)
++#define isl_union_access_info_set_may_source
(*isl_pointers__.p_isl_union_access_info_set_may_source)
++#define isl_union_access_info_set_must_source
(*isl_pointers__.p_isl_union_access_info_set_must_source)
++#define isl_union_access_info_set_schedule
(*isl_pointers__.p_isl_union_access_info_set_schedule)
++#define isl_union_flow_free (*isl_pointers__.p_isl_union_flow_free)
++#define isl_union_flow_get_may_dependence
(*isl_pointers__.p_isl_union_flow_get_may_dependence)
++#define isl_union_flow_get_must_dependence
(*isl_pointers__.p_isl_union_flow_get_must_dependence)
++#define isl_aff_var_on_domain (*isl_pointers__.p_isl_aff_var_on_domain)
++#define isl_multi_aff_from_aff (*isl_pointers__.p_isl_multi_aff_from_aff)
++#define isl_schedule_get_ctx (*isl_pointers__.p_isl_schedule_get_ctx)
++#define isl_multi_aff_set_tuple_id (*isl_pointers__.p_isl_multi_aff_set_tuple_id)
++#define isl_multi_aff_dim (*isl_pointers__.p_isl_multi_aff_dim)
++#define isl_schedule_get_domain (*isl_pointers__.p_isl_schedule_get_domain)
++#define isl_union_set_is_empty (*isl_pointers__.p_isl_union_set_is_empty)
++#define isl_union_set_get_space (*isl_pointers__.p_isl_union_set_get_space)
++#define isl_union_pw_multi_aff_empty (*isl_pointers__.p_isl_union_pw_multi_aff_empty)
++#define isl_union_set_foreach_set (*isl_pointers__.p_isl_union_set_foreach_set)
++#define isl_union_set_free (*isl_pointers__.p_isl_union_set_free)
++#define isl_multi_union_pw_aff_from_union_pw_multi_aff
(*isl_pointers__.p_isl_multi_union_pw_aff_from_union_pw_multi_aff)
++#define isl_multi_union_pw_aff_apply_multi_aff
(*isl_pointers__.p_isl_multi_union_pw_aff_apply_multi_aff)
++#define isl_schedule_insert_partial_schedule
(*isl_pointers__.p_isl_schedule_insert_partial_schedule)
++#define isl_union_pw_multi_aff_free (*isl_pointers__.p_isl_union_pw_multi_aff_free)
++#define isl_pw_multi_aff_project_out_map
(*isl_pointers__.p_isl_pw_multi_aff_project_out_map)
++#define isl_union_pw_multi_aff_add_pw_multi_aff
(*isl_pointers__.p_isl_union_pw_multi_aff_add_pw_multi_aff)
++#define isl_schedule_from_domain (*isl_pointers__.p_isl_schedule_from_domain)
++#define isl_schedule_sequence (*isl_pointers__.p_isl_schedule_sequence)
++#define isl_ast_build_node_from_schedule
(*isl_pointers__.p_isl_ast_build_node_from_schedule)
++#define isl_ast_node_mark_get_node (*isl_pointers__.p_isl_ast_node_mark_get_node)
++#define isl_schedule_node_band_member_get_ast_loop_type
(*isl_pointers__.p_isl_schedule_node_band_member_get_ast_loop_type)
++#define isl_schedule_node_band_member_set_ast_loop_type
(*isl_pointers__.p_isl_schedule_node_band_member_set_ast_loop_type)
++#define isl_val_n_abs_num_chunks (*isl_pointers__.p_isl_val_n_abs_num_chunks)
++#define isl_val_get_abs_num_chunks (*isl_pointers__.p_isl_val_get_abs_num_chunks)
++#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
++#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
++#define isl_version (*isl_pointers__.p_isl_version)
++#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error)
++#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error)
+
+ typedef struct poly_dr *poly_dr_p;
+
+@@ -461,5 +1045,6 @@ extern void build_scops (vec<scop_p> *);
+ extern void dot_all_sese (FILE *, vec<sese_l> &);
+ extern void dot_sese (sese_l &);
+ extern void dot_cfg ();
++extern const char *get_isl_version (bool);
+
+ #endif
+--- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100
++++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100
+@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
+ #include "tree-into-ssa.h"
+ #include "graphite.h"
+
++__typeof (isl_pointers__) isl_pointers__;
++
++static bool
++init_isl_pointers (void)
++{
++ void *h;
++
++ if (isl_pointers__.inited)
++ return isl_pointers__.h != NULL;
++ h = dlopen ("libisl.so.15", RTLD_LAZY);
++ isl_pointers__.h = h;
++ if (h == NULL)
++ return false;
++#define DYNSYM(x) \
++ do \
++ { \
++ union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
++ u.q = dlsym (h, #x); \
++ if (u.q == NULL) \
++ return false; \
++ isl_pointers__.p_##x = u.p; \
++ } \
++ while (0)
++ DYNSYMS
++#undef DYNSYM
++ isl_pointers__.inited = true;
++ return true;
++}
++
+ /* Print global statistics to FILE. */
+
+ static void
+@@ -365,6 +394,15 @@ graphite_transform_loops (void)
+ if (parallelized_function_p (cfun->decl))
+ return;
+
++ if (number_of_loops (cfun) <= 1)
++ return;
++
++ if (!init_isl_pointers ())
++ {
++ sorry ("Graphite loop optimizations cannot be used");
++ return;
++ }
++
+ calculate_dominance_info (CDI_DOMINATORS);
+
+ /* We rely on post-dominators during merging of SESE regions so those
+@@ -455,6 +493,14 @@ graphite_transform_loops (void)
+ }
+ }
+
++const char *
++get_isl_version (bool force)
++{
++ if (force)
++ init_isl_pointers ();
++ return (isl_pointers__.inited && isl_version) ? isl_version () :
"none";
++}
++
+ #else /* If isl is not available: #ifndef HAVE_isl. */
+
+ static void
+--- gcc/toplev.c.jj 2017-02-19 13:02:31.000000000 +0100
++++ gcc/toplev.c 2017-02-19 16:50:25.536301350 +0100
+@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3.
+
+ #ifdef HAVE_isl
+ #include <isl/version.h>
++extern const char *get_isl_version (bool);
+ #endif
+
+ static void general_init (const char *, bool);
+@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i
+ #ifndef HAVE_isl
+ "none"
+ #else
+- isl_version ()
++ get_isl_version (*indent == 0)
+ #endif
+ );
+ if (strcmp (GCC_GMP_STRINGIFY_VERSION, gmp_version))
diff --git a/gcc8-libgomp-omp_h-multilib.patch b/gcc8-libgomp-omp_h-multilib.patch
new file mode 100644
index 0000000..d0e98d1
--- /dev/null
+++ b/gcc8-libgomp-omp_h-multilib.patch
@@ -0,0 +1,17 @@
+2008-06-09 Jakub Jelinek <jakub(a)redhat.com>
+
+ * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
+
+--- libgomp/omp.h.in.jj 2008-06-09 13:34:05.000000000 +0200
++++ libgomp/omp.h.in 2008-06-09 13:34:48.000000000 +0200
+@@ -42,8 +42,8 @@ typedef struct
+
+ typedef struct
+ {
+- unsigned char _x[@OMP_NEST_LOCK_SIZE@]
+- __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
++ unsigned char _x[8 + sizeof (void *)]
++ __attribute__((__aligned__(sizeof (void *))));
+ } omp_nest_lock_t;
+ #endif
+
diff --git a/gcc8-libtool-no-rpath.patch b/gcc8-libtool-no-rpath.patch
new file mode 100644
index 0000000..466c661
--- /dev/null
+++ b/gcc8-libtool-no-rpath.patch
@@ -0,0 +1,27 @@
+libtool sucks.
+--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100
++++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200
+@@ -5394,6 +5394,7 @@ EOF
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+@@ -6071,6 +6072,7 @@ EOF
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+@@ -6120,6 +6122,7 @@ EOF
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
diff --git a/gcc8-mcet.patch b/gcc8-mcet.patch
new file mode 100644
index 0000000..6fb78ca
--- /dev/null
+++ b/gcc8-mcet.patch
@@ -0,0 +1,17 @@
+2018-04-24 Jakub Jelinek <jakub(a)redhat.com>
+
+ * config/i386/i386.opt (mcet): Remporarily re-add as alias to -mshstk.
+
+--- gcc/config/i386/i386.opt (revision 259613)
++++ gcc/config/i386/i386.opt (revision 259612)
+@@ -1006,6 +1006,10 @@ mgeneral-regs-only
+ Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
+ Generate code which uses only the general registers.
+
++mcet
++Target Undocumented Alias(mshstk)
++;; Deprecated
++
+ mshstk
+ Target Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
+ Enable shadow stack built-in functions from Control-flow Enforcement
diff --git a/gcc8-no-add-needed.patch b/gcc8-no-add-needed.patch
new file mode 100644
index 0000000..aa2f52d
--- /dev/null
+++ b/gcc8-no-add-needed.patch
@@ -0,0 +1,50 @@
+2010-02-08 Roland McGrath <roland(a)redhat.com>
+
+ * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
+ linker.
+ * config/gnu-user.h (LINK_EH_SPEC): Likewise.
+ * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+ * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
++++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
+@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu
+ I imagine that other systems will catch up. In the meantime, it
+ doesn't harm to make sure that the data exists to be used later. */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
++++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
+@@ -76,7 +76,7 @@ do { \
+ Signalize that because we have fde-glibc, we don't need all C shared libs
+ linked against -lgcc_s. */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+
+ #undef TARGET_INIT_LIBFUNCS
+ #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
+--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
++++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
+@@ -133,7 +133,7 @@ see the files COPYING3 and COPYING.RUNTI
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+
+ #undef LINK_GCC_C_SEQUENCE_SPEC
+--- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100
++++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100
+@@ -816,7 +816,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
+ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-# define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++# define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
diff --git a/gcc8-rh1512529-aarch64.patch b/gcc8-rh1512529-aarch64.patch
new file mode 100644
index 0000000..4030027
--- /dev/null
+++ b/gcc8-rh1512529-aarch64.patch
@@ -0,0 +1,445 @@
+--- gcc/config/aarch64/aarch64.c
++++ gcc/config/aarch64/aarch64.c
+@@ -3799,7 +3799,14 @@ aarch64_output_probe_stack_range (rtx reg1, rtx reg2)
+ output_asm_insn ("sub\t%0, %0, %1", xops);
+
+ /* Probe at TEST_ADDR. */
+- output_asm_insn ("str\txzr, [%0]", xops);
++ if (flag_stack_clash_protection)
++ {
++ gcc_assert (xops[0] == stack_pointer_rtx);
++ xops[1] = GEN_INT (PROBE_INTERVAL - 8);
++ output_asm_insn ("str\txzr, [%0, %1]", xops);
++ }
++ else
++ output_asm_insn ("str\txzr, [%0]", xops);
+
+ /* Test if TEST_ADDR == LAST_ADDR. */
+ xops[1] = reg2;
+@@ -4589,6 +4596,133 @@ aarch64_set_handled_components (sbitmap components)
+ cfun->machine->reg_is_wrapped_separately[regno] = true;
+ }
+
++/* Allocate POLY_SIZE bytes of stack space using TEMP1 and TEMP2 as scratch
++ registers. */
++
++static void
++aarch64_allocate_and_probe_stack_space (rtx temp1, rtx temp2,
++ poly_int64 poly_size)
++{
++ HOST_WIDE_INT size;
++ if (!poly_size.is_constant (&size))
++ {
++ sorry ("stack probes for SVE frames");
++ return;
++ }
++
++ HOST_WIDE_INT probe_interval
++ = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL);
++ HOST_WIDE_INT guard_size
++ = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE);
++ HOST_WIDE_INT guard_used_by_caller = 1024;
++
++ /* SIZE should be large enough to require probing here. ie, it
++ must be larger than GUARD_SIZE - GUARD_USED_BY_CALLER.
++
++ We can allocate GUARD_SIZE - GUARD_USED_BY_CALLER as a single chunk
++ without any probing. */
++ gcc_assert (size >= guard_size - guard_used_by_caller);
++ aarch64_sub_sp (temp1, temp2, guard_size - guard_used_by_caller, true);
++ HOST_WIDE_INT orig_size = size;
++ size -= (guard_size - guard_used_by_caller);
++
++ HOST_WIDE_INT rounded_size = size & -probe_interval;
++ HOST_WIDE_INT residual = size - rounded_size;
++
++ /* We can handle a small number of allocations/probes inline. Otherwise
++ punt to a loop. */
++ if (rounded_size && rounded_size <= 4 * probe_interval)
++ {
++ /* We don't use aarch64_sub_sp here because we don't want to
++ repeatedly load TEMP1. */
++ rtx step = GEN_INT (-probe_interval);
++ if (probe_interval > ARITH_FACTOR)
++ {
++ emit_move_insn (temp1, step);
++ step = temp1;
++ }
++
++ for (HOST_WIDE_INT i = 0; i < rounded_size; i += probe_interval)
++ {
++ rtx_insn *insn = emit_insn (gen_add2_insn (stack_pointer_rtx, step));
++ add_reg_note (insn, REG_STACK_CHECK, const0_rtx);
++
++ if (probe_interval > ARITH_FACTOR)
++ {
++ RTX_FRAME_RELATED_P (insn) = 1;
++ rtx adj = plus_constant (Pmode, stack_pointer_rtx, -probe_interval);
++ add_reg_note (insn, REG_CFA_ADJUST_CFA,
++ gen_rtx_SET (stack_pointer_rtx, adj));
++ }
++
++ emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
++ (probe_interval
++ - GET_MODE_SIZE (word_mode))));
++ emit_insn (gen_blockage ());
++ }
++ dump_stack_clash_frame_info (PROBE_INLINE, size != rounded_size);
++ }
++ else if (rounded_size)
++ {
++ /* Compute the ending address. */
++ unsigned int scratchreg = REGNO (temp1);
++ emit_move_insn (temp1, GEN_INT (-rounded_size));
++ rtx_insn *insn
++ = emit_insn (gen_add3_insn (temp1, stack_pointer_rtx, temp1));
++
++ /* For the initial allocation, we don't have a frame pointer
++ set up, so we always need CFI notes. If we're doing the
++ final allocation, then we may have a frame pointer, in which
++ case it is the CFA, otherwise we need CFI notes.
++
++ We can determine which allocation we are doing by looking at
++ the temporary register. IP0 is the initial allocation, IP1
++ is the final allocation. */
++ if (scratchreg == IP0_REGNUM || !frame_pointer_needed)
++ {
++ /* We want the CFA independent of the stack pointer for the
++ duration of the loop. */
++ add_reg_note (insn, REG_CFA_DEF_CFA,
++ plus_constant (Pmode, temp1,
++ (rounded_size + (orig_size - size))));
++ RTX_FRAME_RELATED_P (insn) = 1;
++ }
++
++ /* This allocates and probes the stack.
++
++ It also probes at a 4k interval regardless of the value of
++ PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL. */
++ insn = emit_insn (gen_probe_stack_range (stack_pointer_rtx,
++ stack_pointer_rtx, temp1));
++
++ /* Now reset the CFA register if needed. */
++ if (scratchreg == IP0_REGNUM || !frame_pointer_needed)
++ {
++ add_reg_note (insn, REG_CFA_DEF_CFA,
++ plus_constant (Pmode, stack_pointer_rtx,
++ (rounded_size + (orig_size - size))));
++ RTX_FRAME_RELATED_P (insn) = 1;
++ }
++
++ emit_insn (gen_blockage ());
++ dump_stack_clash_frame_info (PROBE_LOOP, size != rounded_size);
++ }
++ else
++ dump_stack_clash_frame_info (PROBE_INLINE, size != rounded_size);
++
++ /* Handle any residuals.
++ Note that any residual must be probed. */
++ if (residual)
++ {
++ aarch64_sub_sp (temp1, temp2, residual, true);
++ add_reg_note (get_last_insn (), REG_STACK_CHECK, const0_rtx);
++ emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
++ (residual - GET_MODE_SIZE (word_mode))));
++ emit_insn (gen_blockage ());
++ }
++ return;
++}
++
+ /* Add a REG_CFA_EXPRESSION note to INSN to say that register REG
+ is saved at BASE + OFFSET. */
+
+@@ -4686,7 +4820,54 @@ aarch64_expand_prologue (void)
+ rtx ip0_rtx = gen_rtx_REG (Pmode, IP0_REGNUM);
+ rtx ip1_rtx = gen_rtx_REG (Pmode, IP1_REGNUM);
+
+- aarch64_sub_sp (ip0_rtx, ip1_rtx, initial_adjust, true);
++ /* We do not fully protect aarch64 against stack clash style attacks
++ as doing so would be prohibitively expensive with less utility over
++ time as newer compilers are deployed.
++
++ We assume the guard is at least 64k. Furthermore, we assume that
++ the caller has not pushed the stack pointer more than 1k into
++ the guard. A caller that pushes the stack pointer than 1k into
++ the guard is considered invalid.
++
++ Note that the caller's ability to push the stack pointer into the
++ guard is a function of the number and size of outgoing arguments and/or
++ dynamic stack allocations due to the mandatory save of the link register
++ in the caller's frame.
++
++ With those assumptions the callee can allocate up to 63k of stack
++ space without probing.
++
++ When probing is needed, we emit a probe at the start of the prologue
++ and every PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL bytes thereafter.
++
++ We have to track how much space has been allocated, but we do not
++ track stores into the stack as implicit probes except for the
++ fp/lr store. */
++ HOST_WIDE_INT guard_size
++ = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE);
++ HOST_WIDE_INT guard_used_by_caller = 1024;
++ if (flag_stack_clash_protection)
++ {
++ if (known_eq (frame_size, 0))
++ dump_stack_clash_frame_info (NO_PROBE_NO_FRAME, false);
++ else if (known_lt (initial_adjust, guard_size - guard_used_by_caller)
++ && known_lt (final_adjust, guard_size - guard_used_by_caller))
++ dump_stack_clash_frame_info (NO_PROBE_SMALL_FRAME, true);
++ }
++
++ /* In theory we should never have both an initial adjustment
++ and a callee save adjustment. Verify that is the case since the
++ code below does not handle it for -fstack-clash-protection. */
++ gcc_assert (known_eq (initial_adjust, 0) || callee_adjust == 0);
++
++ /* Only probe if the initial adjustment is larger than the guard
++ less the amount of the guard reserved for use by the caller's
++ outgoing args. */
++ if (flag_stack_clash_protection
++ && maybe_ge (initial_adjust, guard_size - guard_used_by_caller))
++ aarch64_allocate_and_probe_stack_space (ip0_rtx, ip1_rtx, initial_adjust);
++ else
++ aarch64_sub_sp (ip0_rtx, ip1_rtx, initial_adjust, true);
+
+ if (callee_adjust != 0)
+ aarch64_push_regs (reg1, reg2, callee_adjust);
+@@ -4742,7 +4923,31 @@ aarch64_expand_prologue (void)
+ callee_adjust != 0 || emit_frame_chain);
+ aarch64_save_callee_saves (DFmode, callee_offset, V0_REGNUM, V31_REGNUM,
+ callee_adjust != 0 || emit_frame_chain);
+- aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
++
++ /* We may need to probe the final adjustment as well. */
++ if (flag_stack_clash_protection && maybe_ne (final_adjust, 0))
++ {
++ /* First probe if the final adjustment is larger than the guard size
++ less the amount of the guard reserved for use by the caller's
++ outgoing args. */
++ if (maybe_ge (final_adjust, guard_size - guard_used_by_caller))
++ aarch64_allocate_and_probe_stack_space (ip1_rtx, ip0_rtx,
++ final_adjust);
++ else
++ aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
++
++ /* We must also probe if the final adjustment is larger than the guard
++ that is assumed used by the caller. This may be sub-optimal. */
++ if (maybe_ge (final_adjust, guard_used_by_caller))
++ {
++ if (dump_file)
++ fprintf (dump_file,
++ "Stack clash aarch64 large outgoing arg, probing\n");
++ emit_stack_probe (stack_pointer_rtx);
++ }
++ }
++ else
++ aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
+ }
+
+ /* Return TRUE if we can use a simple_return insn.
+@@ -10476,6 +10681,12 @@ aarch64_override_options_internal (struct gcc_options *opts)
+ && opts->x_optimize >=
aarch64_tune_params.prefetch->default_opt_level)
+ opts->x_flag_prefetch_loop_arrays = 1;
+
++ /* We assume the guard page is 64k. */
++ maybe_set_param_value (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE,
++ 16,
++ opts->x_param_values,
++ global_options_set.x_param_values);
++
+ aarch64_override_options_after_change_1 (opts);
+ }
+
+@@ -17161,6 +17372,28 @@ aarch64_sched_can_speculate_insn (rtx_insn *insn)
+ }
+ }
+
++/* It has been decided that to allow up to 1kb of outgoing argument
++ space to be allocated w/o probing. If more than 1kb of outgoing
++ argment space is allocated, then it must be probed and the last
++ probe must occur no more than 1kbyte away from the end of the
++ allocated space.
++
++ This implies that the residual part of an alloca allocation may
++ need probing in cases where the generic code might not otherwise
++ think a probe is needed.
++
++ This target hook returns TRUE when allocating RESIDUAL bytes of
++ alloca space requires an additional probe, otherwise FALSE is
++ returned. */
++
++static bool
++aarch64_stack_clash_protection_final_dynamic_probe (rtx residual)
++{
++ return (residual == CONST0_RTX (Pmode)
++ || GET_CODE (residual) != CONST_INT
++ || INTVAL (residual) >= 1024);
++}
++
+ /* Implement TARGET_COMPUTE_PRESSURE_CLASSES. */
+
+ static int
+@@ -17669,6 +17902,10 @@ aarch64_libgcc_floating_mode_supported_p
+ #undef TARGET_CONSTANT_ALIGNMENT
+ #define TARGET_CONSTANT_ALIGNMENT aarch64_constant_alignment
+
++#undef TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE
++#define TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE \
++ aarch64_stack_clash_protection_final_dynamic_probe
++
+ #undef TARGET_COMPUTE_PRESSURE_CLASSES
+ #define TARGET_COMPUTE_PRESSURE_CLASSES aarch64_compute_pressure_classes
+
+--- gcc/config/aarch64/aarch64.md
++++ gcc/config/aarch64/aarch64.md
+@@ -5812,7 +5812,7 @@
+ )
+
+ (define_insn "probe_stack_range"
+- [(set (match_operand:DI 0 "register_operand" "=r")
++ [(set (match_operand:DI 0 "register_operand" "=rk")
+ (unspec_volatile:DI [(match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "register_operand" "r")]
+ UNSPECV_PROBE_STACK_RANGE))]
+--- gcc/testsuite/gcc.target/aarch64/stack-check-12.c
++++ gcc/testsuite/gcc.target/aarch64/stack-check-12.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-clash-protection --param
stack-clash-protection-guard-size=12" } */
++/* { dg-require-effective-target supports_stack_clash_protection } */
++
++extern void arf (unsigned long int *, unsigned long int *);
++void
++frob ()
++{
++ unsigned long int num[1000];
++ unsigned long int den[1000];
++ arf (den, num);
++}
++
++/* This verifies that the scheduler did not break the dependencies
++ by adjusting the offsets within the probe and that the scheduler
++ did not reorder around the stack probes. */
++/* { dg-final { scan-assembler-times "sub\\tsp, sp, #4096\\n\\tstr\\txzr, .sp,
4088." 3 } } */
++
++
++
+--- gcc/testsuite/gcc.target/aarch64/stack-check-13.c
++++ gcc/testsuite/gcc.target/aarch64/stack-check-13.c
+@@ -0,0 +1,28 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-clash-protection --param
stack-clash-protection-guard-size=12" } */
++/* { dg-require-effective-target supports_stack_clash_protection } */
++
++#define ARG32(X) X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
++#define ARG192(X) ARG32(X),ARG32(X),ARG32(X),ARG32(X),ARG32(X),ARG32(X)
++void out1(ARG192(__int128));
++int t1(int);
++
++int t3(int x)
++{
++ if (x < 1000)
++ return t1 (x) + 1;
++
++ out1 (ARG192(1));
++ return 0;
++}
++
++
++
++/* This test creates a large (> 1k) outgoing argument area that needs
++ to be probed. We don't test the exact size of the space or the
++ exact offset to make the test a little less sensitive to trivial
++ output changes. */
++/* { dg-final { scan-assembler-times "sub\\tsp, sp, #....\\n\\tstr\\txzr,
\\\[sp" 1 } } */
++
++
++
+--- gcc/testsuite/gcc.target/aarch64/stack-check-14.c
++++ gcc/testsuite/gcc.target/aarch64/stack-check-14.c
+@@ -0,0 +1,25 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-clash-protection --param
stack-clash-protection-guard-size=12" } */
++/* { dg-require-effective-target supports_stack_clash_protection } */
++
++int t1(int);
++
++int t2(int x)
++{
++ char *p = __builtin_alloca (4050);
++ x = t1 (x);
++ return p[x];
++}
++
++
++/* This test has a constant sized alloca that is smaller than the
++ probe interval. But it actually requires two probes instead
++ of one because of the optimistic assumptions we made in the
++ aarch64 prologue code WRT probing state.
++
++ The form can change quite a bit so we just check for two
++ probes without looking at the actual address. */
++/* { dg-final { scan-assembler-times "str\\txzr," 2 } } */
++
++
++
+--- gcc/testsuite/gcc.target/aarch64/stack-check-15.c
++++ gcc/testsuite/gcc.target/aarch64/stack-check-15.c
+@@ -0,0 +1,24 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-clash-protection --param
stack-clash-protection-guard-size=12" } */
++/* { dg-require-effective-target supports_stack_clash_protection } */
++
++int t1(int);
++
++int t2(int x)
++{
++ char *p = __builtin_alloca (x);
++ x = t1 (x);
++ return p[x];
++}
++
++
++/* This test has a variable sized alloca. It requires 3 probes.
++ One in the loop, one for the residual and at the end of the
++ alloca area.
++
++ The form can change quite a bit so we just check for two
++ probes without looking at the actual address. */
++/* { dg-final { scan-assembler-times "str\\txzr," 3 } } */
++
++
++
+--- gcc/testsuite/lib/target-supports.exp
++++ gcc/testsuite/lib/target-supports.exp
+@@ -9201,14 +9201,9 @@ proc check_effective_target_autoincdec { } {
+ #
+ proc check_effective_target_supports_stack_clash_protection { } {
+
+- # Temporary until the target bits are fully ACK'd.
+-# if { [istarget aarch*-*-*] } {
+-# return 1
+-# }
+-
+ if { [istarget x86_64-*-*] || [istarget i?86-*-*]
+ || [istarget powerpc*-*-*] || [istarget rs6000*-*-*]
+- || [istarget s390*-*-*] } {
++ || [istarget aarch64*-**] || [istarget s390*-*-*] } {
+ return 1
+ }
+ return 0
+@@ -9217,9 +9212,9 @@ proc check_effective_target_supports_stack_clash_protection { } {
+ # Return 1 if the target creates a frame pointer for non-leaf functions
+ # Note we ignore cases where we apply tail call optimization here.
+ proc check_effective_target_frame_pointer_for_non_leaf { } {
+- if { [istarget aarch*-*-*] } {
+- return 1
+- }
++# if { [istarget aarch*-*-*] } {
++# return 1
++# }
+
+ # Solaris/x86 defaults to -fno-omit-frame-pointer.
+ if { [istarget i?86-*-solaris*] || [istarget x86_64-*-solaris*] } {
diff --git a/gcc8-rh1574936.patch b/gcc8-rh1574936.patch
new file mode 100644
index 0000000..32db990
--- /dev/null
+++ b/gcc8-rh1574936.patch
@@ -0,0 +1,31 @@
+crt files and statically linked libgcc objects cause false positives
+in annobin coverage, so we add the assembler flag to generate notes
+for them.
+
+The patch also adds notes to libgcc_s.so, but this is harmless because
+these notes only confer that there is no other annobin markup.
+
+2018-07-25 Florian Weimer <fweimer(a)redhat.com>
+
+ * Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add
+ -Wa,--generate-missing-build-notes=yes.
+
+--- libgcc/Makefile.in 2018-01-13 13:05:41.000000000 +0100
++++ libgcc/Makefile.in 2018-07-25 13:15:02.036226940 +0200
+@@ -244,6 +244,7 @@
+ LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
+ $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
+ -fbuilding-libgcc -fno-stack-protector \
++ -Wa,--generate-missing-build-notes=yes \
+ $(INHIBIT_LIBC_CFLAGS)
+
+ # Additional options to use when compiling libgcc2.a.
+@@ -297,6 +298,7 @@
+ $(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
+ -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
+ -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
++ -Wa,--generate-missing-build-notes=yes \
+ $(INHIBIT_LIBC_CFLAGS)
+
+ # Extra flags to use when compiling crt{begin,end}.o.
+
diff --git a/gcc8-sparc-config-detection.patch b/gcc8-sparc-config-detection.patch
new file mode 100644
index 0000000..bb06b35
--- /dev/null
+++ b/gcc8-sparc-config-detection.patch
@@ -0,0 +1,40 @@
+--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
++++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
+@@ -2790,7 +2790,7 @@ sparc-*-rtems*)
+ tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h
rtems.h newlib-stdint.h"
+ tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
+ ;;
+-sparc-*-linux*)
++sparc-*-linux* | sparcv9-*-linux*)
+ tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h
glibc-stdint.h sparc/tso.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+ case ${target} in
+@@ -2844,7 +2844,7 @@ sparc64-*-rtems*)
+ extra_options="${extra_options}"
+ tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
+ ;;
+-sparc64-*-linux*)
++sparc64*-*-linux*)
+ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h
linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+ tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
+--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
++++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
+@@ -1002,7 +1002,7 @@ sparc-*-elf*)
+ tmake_file="${tmake_file} t-fdpbit t-crtfm"
+ extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
+ ;;
+-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
++sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6
+ tmake_file="${tmake_file} t-crtfm"
+ if test "${host_address}" = 64; then
+ tmake_file="$tmake_file sparc/t-linux64"
+@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
+ tmake_file="$tmake_file t-crtfm"
+ extra_parts="$extra_parts crtfastmath.o"
+ ;;
+-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
++sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
+ extra_parts="$extra_parts crtfastmath.o"
+ tmake_file="${tmake_file} t-crtfm sparc/t-linux"
+ if test "${host_address}" = 64; then
diff --git a/ghdl.spec b/ghdl.spec
index eb223ca..7e67771 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -1,6 +1,3 @@
-%global DATE 20170118
-%global SVNREV 244565
-%global gcc_version 6.3.1
%global ghdlver 0.35dev
%global ghdlgitrev .20190129git3c30e3b
@@ -26,43 +23,141 @@
%bcond_with gnatwae
+%global DATE 20190109
+%global SVNREV 267776
+%global gcc_version 8.2.1
+%global gcc_major 8
+# Note, gcc_release must be integer, if you want to add suffixes to
+# %%{release}, append them after %%{gcc_release} on Release: line.
+%global gcc_release 7
+%global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
+%global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
+%global _unpackaged_files_terminate_build 0
+%global _performance_build 1
+# Hardening slows the compiler way too much.
+%undefine _hardened_build
+%if 0%{?fedora} > 27 || 0%{?rhel} > 7
+# Until annobin is fixed (#1519165).
+%undefine _annotated_build
+%endif
+%global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
+%ifarch %{ix86} x86_64 ia64 ppc64le
+%global build_libquadmath 1
+%else
+%global build_libquadmath 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
+%global build_libasan 1
+%else
+%global build_libasan 0
+%endif
+%ifarch x86_64 ppc64 ppc64le aarch64
+%global build_libtsan 1
+%else
+%global build_libtsan 0
+%endif
+%ifarch x86_64 ppc64 ppc64le aarch64
+%global build_liblsan 1
+%else
+%global build_liblsan 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
+%global build_libubsan 1
+%else
+%global build_libubsan 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
+%global build_libatomic 1
+%else
+%global build_libatomic 0
+%endif
+%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64
+%global build_libitm 1
+%else
+%global build_libitm 0
+%endif
+%if 0%{?rhel} > 7
+%global build_libmpx 0
+%else
+%ifarch %{ix86} x86_64
+%global build_libmpx 1
+%else
+%global build_libmpx 0
+%endif
+%endif
+%global build_isl 1
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
+%global attr_ifunc 1
+%else
+%global attr_ifunc 0
+%endif
+%ifarch x86_64 ppc64le
+%global build_offload_nvptx 1
+%else
+%global build_offload_nvptx 0
+%endif
+%ifarch s390x
+%global multilib_32_arch s390
+%endif
+%ifarch sparc64
+%global multilib_32_arch sparcv9
+%endif
+%ifarch ppc64 ppc64p7
+%global multilib_32_arch ppc
+%endif
+%ifarch x86_64
+%global multilib_32_arch i686
+%endif
+
Summary: A VHDL simulator, using the GCC technology
Name: ghdl
Version: %{ghdlver}
Release: 1%{ghdlgitrev}.0%{?dist}
-License: GPLv2+
+License: GPLv2+ and GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
LGPLv2+ and BSD
Group: Development/Languages
URL:
http://ghdl.free.fr/
+# The source for this package was pulled from upstream's vcs. Use the
+# following commands to generate the tarball:
+# svn export
svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-8-branch@%%{SVNREV}
gcc-%%{version}-%%{DATE}
+# tar cf - gcc-%%{version}-%%{DATE} | xz -9e > gcc-%%{version}-%%{DATE}.tar.xz
+Source0: gcc-%{gcc_version}-%{DATE}.tar.xz
+# The source for nvptx-tools package was pulled from upstream's vcs. Use the
+# following commands to generate the tarball:
+# git clone
https://github.com/MentorEmbedded/nvptx-tools.git
+# cd nvptx-tools
+# git archive origin/master --prefix=nvptx-tools-%%{nvptx_tools_gitrev}/ | xz -9e >
../nvptx-tools-%%{nvptx_tools_gitrev}.tar.xz
+# cd ..; rm -rf nvptx-tools
+Source1: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz
+# The source for nvptx-newlib package was pulled from upstream's vcs. Use the
+# following commands to generate the tarball:
+# git clone
https://github.com/MentorEmbedded/nvptx-newlib.git
+# cd nvptx-newlib
+# git archive origin/master --prefix=nvptx-newlib-%%{nvptx_newlib_gitrev}/ | xz -9 >
../nvptx-newlib-%%{nvptx_newlib_gitrev}.tar.xz
+# cd ..; rm -rf nvptx-newlib
+Source2: nvptx-newlib-%{nvptx_newlib_gitrev}.tar.xz
+%global isl_version 0.16.1
+
+Patch0: gcc8-hack.patch
+Patch2: gcc8-i386-libgomp.patch
+Patch3: gcc8-sparc-config-detection.patch
+Patch4: gcc8-libgomp-omp_h-multilib.patch
+Patch5: gcc8-libtool-no-rpath.patch
+Patch6: gcc8-isl-dl.patch
+Patch8: gcc8-no-add-needed.patch
+Patch9: gcc8-foffload-default.patch
+Patch10: gcc8-Wno-format-security.patch
+Patch11: gcc8-rh1512529-aarch64.patch
+Patch12: gcc8-mcet.patch
+Patch13: gcc8-rh1574936.patch
+
+Patch1000: nvptx-tools-no-ptxas.patch
+Patch1001: nvptx-tools-build.patch
+Patch1002: nvptx-tools-glibc.patch
+
# HOWTO create source files from ghdl git at
github.com
# check out the git repo
# git clone
https://github.com/tgingold/ghdl.git
# tar cvJf ghdl%{ghdlgitrev}.tar.bz2 --exclude-vcs ghdl
-#
-# The source for this package was pulled from upstream's vcs. Use the
-# following commands to generate the tarball:
-# svn export
svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_7-branch@%{SVNREV}
gcc-%{version}-%{DATE}
-# tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
-Source0: gcc-%{gcc_version}-%{DATE}.tar.bz2
-%global isl_version 0.14
-Source1:
ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.xz
-%global cloog_version 0.18.3
-Source2:
ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-%{cloog_version}.tar.gz
-Patch0: gcc6-hack.patch
-Patch1: gcc6-java-nomulti.patch
-Patch2: gcc6-ppc32-retaddr.patch
-Patch3: gcc6-rh330771.patch
-Patch4: gcc6-i386-libgomp.patch
-Patch5: gcc6-sparc-config-detection.patch
-Patch6: gcc6-libgomp-omp_h-multilib.patch
-Patch7: gcc6-libtool-no-rpath.patch
-Patch8: gcc6-isl-dl.patch
-Patch9: gcc6-libstdc++-docs.patch
-Patch10: gcc6-no-add-needed.patch
-Patch11: gcc6-libgo-p224.patch
-Patch12: gcc6-aarch64-async-unw-tables.patch
-Patch13: gcc6-libsanitize-aarch64-va42.patch
-Patch90: gcc6-compile.patch
-Patch91: gcc6-ucontext.patch
Source100: ghdl%{ghdlgitrev}.tar.bz2
Patch100: ghdl-llvmflags.patch
# Both following patches have been sent to upstream mailing list:
@@ -76,32 +171,7 @@ Patch200: upf.patch
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
Requires: gcc
-# (Build)Requires from fc gcc41 package
-%global multilib_64_archs sparc64 ppc64 s390x x86_64
-%ifarch s390x
-%global multilib_32_arch s390
-%endif
-%ifarch sparc64
-%global multilib_32_arch sparc
-%endif
-%ifarch ppc64
-%global multilib_32_arch ppc
-%endif
-%ifarch x86_64
-%global multilib_32_arch i386
-%endif
-#%ifarch %{ix86} x86_64
-#%global build_libmpx 1
-#%else
-%global build_libmpx 0
-#%endif
-%global build_isl 1
-%global build_libstdcxx_docs 1
-%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
-%global attr_ifunc 1
-%else
-%global attr_ifunc 0
-%endif
+
# Need binutils with -pie support >= 2.14.90.0.4-4
# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
@@ -109,26 +179,54 @@ Requires: gcc
# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
# Need binutils which support --build-id >= 2.17.50.0.17-3
-# Need binutils which support %gnu_unique_object >= 2.19.51.0.14
+# Need binutils which support %%gnu_unique_object >= 2.19.51.0.14
# Need binutils which support .cfi_sections >= 2.19.51.0.14-33
# Need binutils which support --no-add-needed >= 2.20.51.0.2-12
# Need binutils which support -plugin
+# Need binutils which support .loc view >= 2.30
+# Need binutils which support --generate-missing-build-notes=yes >= 2.31
+%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
+BuildRequires: binutils >= 2.31
+%else
BuildRequires: binutils >= 2.24
-BuildRequires: zlib-devel, gettext, bison, flex, sharutils, texinfo, texinfo-tex, gawk,
/usr/bin/pod2man
+%endif
+# While gcc doesn't include statically linked binaries, during testing
+# -static is used several times.
+BuildRequires: glibc-static
+BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
+BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
+BuildRequires: systemtap-sdt-devel >= 1.3
+BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
+BuildRequires: python2-devel, python3-devel
+BuildRequires: gcc, gcc-c++
+# For VTA guality testing
+BuildRequires: gdb
# Make sure pthread.h doesn't contain __thread tokens
# Make sure glibc supports stack protector
+# Make sure glibc supports DT_GNU_HASH
BuildRequires: glibc-devel >= 2.4.90-13
BuildRequires: elfutils-devel >= 0.147
BuildRequires: elfutils-libelf-devel >= 0.147
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
+%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
# Make sure glibc supports TFmode long double
BuildRequires: glibc >= 2.3.90-35
%endif
-# GHDL requires Ada to build
-BuildRequires: gcc-gnat >= 4.3, libgnat-devel >= 4.3
-# GCC build requirements
-BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
-BuildRequires: gcc-c++ >= 4.3
+%ifarch %{multilib_64_archs} sparcv9 ppc
+# Ensure glibc{,-devel} is installed for both multilib arches
+BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
+%endif
+%ifarch ia64
+BuildRequires: libunwind >= 0.98
+%endif
+%if %{build_isl}
+BuildRequires: isl = %{isl_version}
+BuildRequires: isl-devel = %{isl_version}
+%if 0%{?__isa_bits} == 64
+Requires: libisl.so.15()(64bit)
+%else
+Requires: libisl.so.15
+%endif
+%endif
# Need .eh_frame ld optimizations
# Need proper visibility support
# Need -pie support
@@ -136,21 +234,23 @@ BuildRequires: gcc-c++ >= 4.3
# On ppc64, need omit dot symbols support and --non-overlapping-opd
# Need binutils that owns /usr/bin/c++filt
# Need binutils that support .weakref
-Requires: binutils >= 2.16.91.0.3-1
-# Make sure gdb will understand DW_FORM_strp
-Conflicts: gdb < 5.1-2
-Requires: glibc-devel >= 2.2.90-12
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
-# Make sure glibc supports TFmode long double
-Requires: glibc >= 2.3.90-35
-%endif
-%ifarch %{multilib_64_archs} sparcv9 ppc
-# Ensure glibc{,-devel} is installed for both multilib arches
-BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
-%endif
-%ifarch ia64
-BuildRequires: libunwind >= 0.98
+# Need binutils that supports --hash-style=gnu
+# Need binutils that support mffgpr/mftgpr
+# Need binutils that support --build-id
+# Need binutils that support %%gnu_unique_object
+# Need binutils that support .cfi_sections
+# Need binutils that support --no-add-needed
+# Need binutils that support -plugin
+# Need binutils that support .loc view >= 2.30
+# Need binutils which support --generate-missing-build-notes=yes >= 2.31
+%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
+Requires: binutils >= 2.31
+%else
+Requires: binutils >= 2.24
%endif
+Requires: libgcc >= %{version}-%{release}
+Requires: libgomp = %{version}-%{release}
+
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
@@ -255,28 +355,63 @@ that tracks signal updates and schedules processes.
%endif
%prep
-%setup -q -n gcc-%{gcc_version}-%{DATE} -a 1 -a 2 -a 100
+%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 100
%patch0 -p0 -b .hack~
-%patch1 -p0 -b .java-nomulti~
-%patch2 -p0 -b .ppc32-retaddr~
-%patch3 -p0 -b .rh330771~
-%patch4 -p0 -b .i386-libgomp~
-%patch5 -p0 -b .sparc-config-detection~
-%patch6 -p0 -b .libgomp-omp_h-multilib~
-%patch7 -p0 -b .libtool-no-rpath~
+%patch2 -p0 -b .i386-libgomp~
+%patch3 -p0 -b .sparc-config-detection~
+%patch4 -p0 -b .libgomp-omp_h-multilib~
+%patch5 -p0 -b .libtool-no-rpath~
%if %{build_isl}
-%patch8 -p0 -b .isl-dl~
+%patch6 -p0 -b .isl-dl~
%endif
-%if %{build_libstdcxx_docs}
-%patch9 -p0 -b .libstdc++-docs~
+%patch8 -p0 -b .no-add-needed~
+%patch9 -p0 -b .foffload-default~
+%patch10 -p0 -b .Wno-format-security~
+%patch11 -p0 -b .rh1512529-aarch64~
+%if 0%{?fedora} == 28
+%patch12 -p0 -b .mcet~
+%endif
+%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
+%patch13 -p0 -b .rh1574936~
%endif
-%patch10 -p0 -b .no-add-needed~
-%patch11 -p0 -b .libgo-p224~
-rm -f libgo/go/crypto/elliptic/p224{,_test}.go
-%patch12 -p0 -b .aarch64-async-unw-tables~
-%patch13 -p0 -b .libsanitize-aarch64-va42~
-%patch90 -p0 -b .compile~
-%patch91 -p0 -b .ucontext~
+
+cd nvptx-tools-%{nvptx_tools_gitrev}
+%patch1000 -p1 -b .nvptx-tools-no-ptxas~
+%patch1001 -p1 -b .nvptx-tools-build~
+%patch1002 -p1 -b .nvptx-tools-glibc~
+cd ..
+
+echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
+
+cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
+
+echo 'TM_H += $(srcdir)/config/rs6000/rs6000-modes.h' >>
gcc/config/rs6000/t-rs6000
+
+./contrib/gcc_update --touch
+
+LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
+
+sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt
+
+%ifarch ppc
+if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
+ mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
+ rm -rf libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32
+fi
+%endif
+%ifarch sparc
+if [ -d libstdc++-v3/config/abi/post/sparc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/post/sparc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{,64/}baseline_symbols.txt
+ mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{32/,}baseline_symbols.txt
+ rm -rf libstdc++-v3/config/abi/post/sparc64-linux-gnu/32
+fi
+%endif
+
+# This test causes fork failures, because it spawns way too many threads
+rm -f gcc/testsuite/go.test/test/chan/goroutines.go
%patch200 -p0 -b .upf~
@@ -373,61 +508,13 @@ popd
# Undo the broken autoconf change in recent Fedora versions
export CONFIG_SITE=NONE
-%{__rm} -fr obj-%{gcc_target_platform}
-%{__mkdir} obj-%{gcc_target_platform}
-pushd obj-%{gcc_target_platform}
-
-%if %{build_isl}
-mkdir isl-build isl-install
-%ifarch s390 s390x
-ISL_FLAG_PIC=-fPIC
-%else
-ISL_FLAG_PIC=-fpic
-%endif
-cd isl-build
-../../isl-%{isl_version}/configure --disable-shared \
- CC=/usr/bin/gcc CXX=/usr/bin/g++ \
- CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..;
pwd`/isl-install
-make %{?_smp_mflags}
-make install
-cd ..
-
-mkdir cloog-build cloog-install
-cd cloog-build
-cat >> ../../cloog-%{cloog_version}/source/isl/constraints.c << \EOF
-#include <isl/flow.h>
-static void __attribute__((used)) *s1 = (void *) isl_union_map_compute_flow;
-static void __attribute__((used)) *s2 = (void *) isl_map_dump;
-EOF
-sed -i 's|libcloog|libgcc6privatecloog|g' \
- ../../cloog-%{cloog_version}/{,test/}Makefile.{am,in}
-isl_prefix=`cd ../isl-install; pwd` \
-../../cloog-%{cloog_version}/configure --with-isl=system \
- --with-isl-prefix=`cd ../isl-install; pwd` \
- CC=/usr/bin/gcc CXX=/usr/bin/g++ \
- CFLAGS="${CFLAGS:-%optflags}" CXXFLAGS="${CXXFLAGS:-%optflags}" \
- --prefix=`cd ..; pwd`/cloog-install
-sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g'
libtool
-sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
-make %{?_smp_mflags}
-make %{?_smp_mflags} install
-cd ../cloog-install/lib
-rm libgcc6privatecloog-isl.so{,.4}
-mv libgcc6privatecloog-isl.so.4.0.0 libcloog-isl.so.4
-ln -sf libcloog-isl.so.4 libcloog-isl.so
-ln -sf libcloog-isl.so.4 libcloog.so
-cd ../..
-%endif
-
CC=gcc
+CXX=g++
OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcet//g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fstack-clash-protection//g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fcf-protection//g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e
's,-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1,,g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e
's/-Werror=format-security/-Wformat-security/g'`
%ifarch sparc
OPT_FLAGS=`echo $OPT_FLAGS|sed -e
's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
%endif
@@ -438,49 +525,84 @@ OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e
's/[[:blank:]]\+/ /g'`
case "$OPT_FLAGS" in
*-fasynchronous-unwind-tables*)
sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables
/' \
- ../libgcc/Makefile.in
+ libgcc/Makefile.in
;;
esac
+%if %{build_offload_nvptx}
+mkdir obji
+IROOT=`pwd`/obji
+cd nvptx-tools-%{nvptx_tools_gitrev}
+rm -rf obj-%{gcc_target_platform}
+mkdir obj-%{gcc_target_platform}
+cd obj-%{gcc_target_platform}
+CC="$CC" CXX="$CXX" CFLAGS="%{optflags}"
CXXFLAGS="%{optflags}" \
+../configure --prefix=%{_prefix}
+make %{?_smp_mflags}
+make install prefix=${IROOT}%{_prefix}
+cd ../..
+
+ln -sf nvptx-newlib-%{nvptx_newlib_gitrev}/newlib newlib
+rm -rf obj-offload-nvptx-none
+mkdir obj-offload-nvptx-none
+
+cd obj-offload-nvptx-none
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions /
/g' \
- | sed 's/ -Werror=format-security / /'`" \
+ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
- ../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
- --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap=no \
+ ../configure --disable-bootstrap --disable-sjlj-exceptions \
+ --enable-newlib-io-long-long --with-build-time-tools=${IROOT}%{_prefix}/nvptx-none/bin
\
+ --target nvptx-none --enable-as-accelerator-for=%{gcc_target_platform} \
+ --enable-languages=c,c++,fortran,lto \
+ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+ --with-bugurl=http://bugzilla.redhat.com/bugzilla \
+ --enable-checking=release --with-system-zlib \
+ --with-gcc-major-version-only --without-isl
+make %{?_smp_mflags}
+cd ..
+rm -f newlib
+%endif
+
+rm -rf obj-%{gcc_target_platform}
+mkdir obj-%{gcc_target_platform}
+pushd obj-%{gcc_target_platform}
+
+CONFIGURE_OPTS="\
+ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+ --with-bugurl=http://bugzilla.redhat.com/bugzilla \
--enable-shared --enable-threads=posix --enable-checking=release \
%ifarch ppc64le
--enable-targets=powerpcle-linux \
%endif
-%ifarch ppc64le
- --disable-multilib \
+%ifarch ppc64le %{mips} riscv64
+ --disable-multilib \
%else
- --enable-multilib \
+ --enable-multilib \
%endif
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
- --enable-gnu-unique-object --enable-linker-build-id \
+ --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \
%ifnarch %{mips}
--with-linker-hash-style=gnu \
%endif
- --enable-languages=vhdl \
--enable-plugin --enable-initfini-array \
- --disable-libgcj \
-%if 0%{?fedora} >= 21 && 0%{?fedora} <= 22
- --with-default-libstdcxx-abi=gcc4-compatible \
-%endif
%if %{build_isl}
- --with-isl=`pwd`/isl-install --with-cloog=`pwd`/cloog-install \
+ --with-isl \
%else
- --without-isl --without-cloog \
+ --without-isl \
%endif
%if %{build_libmpx}
--enable-libmpx \
%else
--disable-libmpx \
%endif
+%if %{build_offload_nvptx}
+ --enable-offload-targets=nvptx-none \
+ --without-cuda-driver \
+%endif
%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
%if %{attr_ifunc}
- --enable-gnu-indirect-function \
+ --enable-gnu-indirect-function \
%endif
%endif
%ifarch %{arm}
@@ -516,6 +638,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS"
\
--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
%endif
%ifarch %{ix86} x86_64
+ --enable-cet \
--with-tune=generic \
%endif
%if 0%{?rhel} >= 7
@@ -535,13 +658,22 @@ CC="$CC" CXX="$CXX"
CFLAGS="$OPT_FLAGS" \
%endif
%ifarch s390 s390x
%if 0%{?rhel} >= 7
- --with-arch=z196 --with-tune=zEC12 --enable-decimal-float \
+%if 0%{?rhel} > 7
+ --with-arch=zEC12 --with-tune=z13 \
+%else
+ --with-arch=z196 --with-tune=zEC12 \
+%endif
+%else
+%if 0%{?fedora} >= 26
+ --with-arch=zEC12 --with-tune=z13 \
%else
- --with-arch=z9-109 --with-tune=z10 --enable-decimal-float \
+ --with-arch=z9-109 --with-tune=z10 \
+%endif
%endif
+ --enable-decimal-float \
%endif
%ifarch armv7hl
- --with-tune=cortex-a8 --with-arch=armv7-a \
+ --with-tune=generic-armv7-a --with-arch=armv7-a \
--with-float=hard --with-fpu=vfpv3-d16 --with-abi=aapcs-linux \
%endif
%ifarch mips mipsel
@@ -553,7 +685,15 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS"
\
%ifnarch sparc sparcv9 ppc
--build=%{gcc_target_platform} \
%endif
+ "
+CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
+ CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions /
/g' \
+ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
+ XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+ ../configure --enable-bootstrap=no \
+ --enable-languages=vhdl \
+ $CONFIGURE_OPTS
# workaround for gcc gnat ICE on valid, do not compile trans-chap8 with optimization
%{__make} || true
@@ -570,19 +710,15 @@ gnatmake -c -aI%{_builddir}/gcc-%{gcc_version}-%{DATE}/gcc/vhdl
ortho_gcc-main \
#-gnatwae
popd
-#%ifarch %{arm} sparc sparcv9 sparc64
-#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS"
bootstrap
+#%ifarch sparc sparcv9 sparc64
+#make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
#%else
-#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS"
profiledbootstrap
+#make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
#%endif
#%{__make} %{?_smp_mflags}
%{__make}
-%if %{build_isl}
-cp -a cloog-install/lib/libcloog-isl.so.4 gcc/
-%endif
-
popd
%install
diff --git a/nvptx-tools-build.patch b/nvptx-tools-build.patch
new file mode 100644
index 0000000..53d7483
--- /dev/null
+++ b/nvptx-tools-build.patch
@@ -0,0 +1,11 @@
+--- nvptx-tools/nvptx-as.c.jj 2017-01-20 12:40:18.000000000 +0100
++++ nvptx-tools/nvptx-as.c 2017-01-20 12:43:53.864271442 +0100
+@@ -939,7 +939,7 @@ fork_execute (const char *prog, char *co
+ fatal_error ("%s: %m", errmsg);
+ }
+ else
+- fatal_error (errmsg);
++ fatal_error ("%s", errmsg);
+ }
+ do_wait (prog, pex);
+ }
diff --git a/nvptx-tools-glibc.patch b/nvptx-tools-glibc.patch
new file mode 100644
index 0000000..4b50114
--- /dev/null
+++ b/nvptx-tools-glibc.patch
@@ -0,0 +1,32 @@
+--- nvptx-tools/configure.ac.jj 2017-01-13 12:48:31.000000000 +0100
++++ nvptx-tools/configure.ac 2017-05-03 10:26:57.076092259 +0200
+@@ -66,6 +66,8 @@ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
+
++AC_CHECK_DECLS(getopt)
++
+ AC_CONFIG_SUBDIRS([libiberty])
+ AC_CONFIG_FILES([Makefile dejagnu.exp])
+ AC_OUTPUT
+--- nvptx-tools/configure.jj 2017-01-13 12:48:54.000000000 +0100
++++ nvptx-tools/configure 2017-05-03 10:27:13.503876809 +0200
+@@ -3963,6 +3963,18 @@ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
+
++ac_fn_c_check_decl "$LINENO" "getopt"
"ac_cv_have_decl_getopt" "$ac_includes_default"
++if test "x$ac_cv_have_decl_getopt" = x""yes; then :
++ ac_have_decl=1
++else
++ ac_have_decl=0
++fi
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_DECL_GETOPT $ac_have_decl
++_ACEOF
++
++
+
+
+ subdirs="$subdirs libiberty"
diff --git a/nvptx-tools-no-ptxas.patch b/nvptx-tools-no-ptxas.patch
new file mode 100644
index 0000000..28bc597
--- /dev/null
+++ b/nvptx-tools-no-ptxas.patch
@@ -0,0 +1,947 @@
+--- nvptx-tools/configure.ac
++++ nvptx-tools/configure.ac
+@@ -51,6 +51,7 @@ LIBS="$LIBS -lcuda"
+ AC_CHECK_FUNCS([[cuGetErrorName] [cuGetErrorString]])
+ AC_CHECK_DECLS([[cuGetErrorName], [cuGetErrorString]],
+ [], [], [[#include <cuda.h>]])
++AC_CHECK_HEADERS(unistd.h sys/stat.h)
+
+ AC_MSG_CHECKING([for extra programs to build requiring -lcuda])
+ NVPTX_RUN=
+--- nvptx-tools/include/libiberty.h
++++ nvptx-tools/include/libiberty.h
+@@ -390,6 +390,17 @@ extern void hex_init (void);
+ /* Save files used for communication between processes. */
+ #define PEX_SAVE_TEMPS 0x4
+
++/* Max number of alloca bytes per call before we must switch to malloc.
++
++ ?? Swiped from gnulib's regex_internal.h header. Is this actually
++ the case? This number seems arbitrary, though sane.
++
++ The OS usually guarantees only one guard page at the bottom of the stack,
++ and a page size can be as small as 4096 bytes. So we cannot safely
++ allocate anything larger than 4096 bytes. Also care for the possibility
++ of a few compiler-allocated temporary stack slots. */
++#define MAX_ALLOCA_SIZE 4032
++
+ /* Prepare to execute one or more programs, with standard output of
+ each program fed to standard input of the next.
+ FLAGS As above.
+--- nvptx-tools/nvptx-as.c
++++ nvptx-tools/nvptx-as.c
+@@ -30,6 +30,9 @@
+ #include <string.h>
+ #include <wait.h>
+ #include <unistd.h>
++#ifdef HAVE_SYS_STAT_H
++#include <sys/stat.h>
++#endif
+ #include <errno.h>
+ #define obstack_chunk_alloc malloc
+ #define obstack_chunk_free free
+@@ -42,6 +45,38 @@
+
+ #include "version.h"
+
++#ifndef R_OK
++#define R_OK 4
++#define W_OK 2
++#define X_OK 1
++#endif
++
++#ifndef DIR_SEPARATOR
++# define DIR_SEPARATOR '/'
++#endif
++
++#if defined (_WIN32) || defined (__MSDOS__) \
++ || defined (__DJGPP__) || defined (__OS2__)
++# define HAVE_DOS_BASED_FILE_SYSTEM
++# define HAVE_HOST_EXECUTABLE_SUFFIX
++# define HOST_EXECUTABLE_SUFFIX ".exe"
++# ifndef DIR_SEPARATOR_2
++# define DIR_SEPARATOR_2 '\\'
++# endif
++# define PATH_SEPARATOR ';'
++#else
++# define PATH_SEPARATOR ':'
++#endif
++
++#ifndef DIR_SEPARATOR_2
++# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
++#else
++# define IS_DIR_SEPARATOR(ch) \
++ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
++#endif
++
++#define DIR_UP ".."
++
+ static const char *outname = NULL;
+
+ static void __attribute__ ((format (printf, 1, 2)))
+@@ -816,7 +851,7 @@ traverse (void **slot, void *data)
+ }
+
+ static void
+-process (FILE *in, FILE *out)
++process (FILE *in, FILE *out, int verify, const char *outname)
+ {
+ symbol_table = htab_create (500, hash_string_hash, hash_string_eq,
+ NULL);
+@@ -824,6 +859,18 @@ process (FILE *in, FILE *out)
+ const char *input = read_file (in);
+ Token *tok = tokenize (input);
+
++ /* By default, when ptxas is not in PATH, do minimalistic verification,
++ just require that the first non-comment directive is .version. */
++ if (verify < 0)
++ {
++ size_t i;
++ for (i = 0; tok[i].kind == K_comment; i++)
++ ;
++ if (tok[i].kind != K_dotted || !is_keyword (&tok[i], "version"))
++ fatal_error ("missing .version directive at start of file '%s'",
++ outname);
++ }
++
+ do
+ tok = parse_file (tok);
+ while (tok->kind);
+@@ -897,9 +944,83 @@ fork_execute (const char *prog, char *const *argv)
+ do_wait (prog, pex);
+ }
+
++/* Determine if progname is available in PATH. */
++static bool
++program_available (const char *progname)
++{
++ char *temp = getenv ("PATH");
++ if (temp)
++ {
++ char *startp, *endp, *nstore, *alloc_ptr = NULL;
++ size_t prefixlen = strlen (temp) + 1;
++ size_t len;
++ if (prefixlen < 2)
++ prefixlen = 2;
++
++ len = prefixlen + strlen (progname) + 1;
++#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
++ len += strlen (HOST_EXECUTABLE_SUFFIX);
++#endif
++ if (len < MAX_ALLOCA_SIZE)
++ nstore = (char *) alloca (len);
++ else
++ alloc_ptr = nstore = (char *) malloc (len);
++
++ startp = endp = temp;
++ while (1)
++ {
++ if (*endp == PATH_SEPARATOR || *endp == 0)
++ {
++ if (endp == startp)
++ {
++ nstore[0] = '.';
++ nstore[1] = DIR_SEPARATOR;
++ nstore[2] = '\0';
++ }
++ else
++ {
++ memcpy (nstore, startp, endp - startp);
++ if (! IS_DIR_SEPARATOR (endp[-1]))
++ {
++ nstore[endp - startp] = DIR_SEPARATOR;
++ nstore[endp - startp + 1] = 0;
++ }
++ else
++ nstore[endp - startp] = 0;
++ }
++ strcat (nstore, progname);
++ if (! access (nstore, X_OK)
++#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
++ || ! access (strcat (nstore, HOST_EXECUTABLE_SUFFIX), X_OK)
++#endif
++ )
++ {
++#if defined (HAVE_SYS_STAT_H) && defined (S_ISREG)
++ struct stat st;
++ if (stat (nstore, &st) >= 0 && S_ISREG (st.st_mode))
++#endif
++ {
++ free (alloc_ptr);
++ return true;
++ }
++ }
++
++ if (*endp == 0)
++ break;
++ endp = startp = endp + 1;
++ }
++ else
++ endp++;
++ }
++ free (alloc_ptr);
++ }
++ return false;
++}
++
+ static struct option long_options[] = {
+ {"traditional-format", no_argument, 0, 0 },
+ {"save-temps", no_argument, 0, 0 },
++ {"verify", no_argument, 0, 0 },
+ {"no-verify", no_argument, 0, 0 },
+ {"help", no_argument, 0, 'h' },
+ {"version", no_argument, 0, 'V' },
+@@ -912,7 +1033,7 @@ main (int argc, char **argv)
+ FILE *in = stdin;
+ FILE *out = stdout;
+ bool verbose __attribute__((unused)) = false;
+- bool verify = true;
++ int verify = -1;
+ const char *smver = "sm_30";
+
+ int o;
+@@ -923,7 +1044,9 @@ main (int argc, char **argv)
+ {
+ case 0:
+ if (option_index == 2)
+- verify = false;
++ verify = 1;
++ else if (option_index == 3)
++ verify = 0;
+ break;
+ case 'v':
+ verbose = true;
+@@ -948,7 +1071,8 @@ Usage: nvptx-none-as [option...] [asmfile]\n\
+ Options:\n\
+ -o FILE Write output to FILE\n\
+ -v Be verbose\n\
++ --verify Do verify output is acceptable to ptxas\n\
+ --no-verify Do not verify output is acceptable to ptxas\n\
+ --help Print this help and exit\n\
+ --version Print version number and exit\n\
+ \n\
+@@ -983,11 +1108,17 @@ This program has absolutely no warranty.\n",
+ if (!in)
+ fatal_error ("cannot open input ptx file");
+
+- process (in, out);
+- if (outname)
++ if (outname == NULL)
++ verify = 0;
++ else if (verify == -1)
++ if (program_available ("ptxas"))
++ verify = 1;
++
++ process (in, out, verify, outname);
++ if (outname)
+ fclose (out);
+
+- if (verify && outname)
++ if (verify > 0)
+ {
+ struct obstack argv_obstack;
+ obstack_init (&argv_obstack);
+--- nvptx-tools/configure
++++ nvptx-tools/configure
+@@ -168,7 +168,8 @@ test x\$exitcode = x0 || exit 1"
+ as_suggested="
as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested"
as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested"
as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" !=
\"x\$as_lineno_2'\$as_run'\" &&
+- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" =
\"x\$as_lineno_2'\$as_run'\"' || exit 1"
++ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" =
\"x\$as_lineno_2'\$as_run'\"' || exit 1
++test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+ else
+@@ -552,11 +553,50 @@ PACKAGE_URL=
+
+ ac_unique_file="nvptx-tools"
+ ac_unique_file="nvptx-as.c"
++# Factoring default headers for most tests.
++ac_includes_default="\
++#include <stdio.h>
++#ifdef HAVE_SYS_TYPES_H
++# include <sys/types.h>
++#endif
++#ifdef HAVE_SYS_STAT_H
++# include <sys/stat.h>
++#endif
++#ifdef STDC_HEADERS
++# include <stdlib.h>
++# include <stddef.h>
++#else
++# ifdef HAVE_STDLIB_H
++# include <stdlib.h>
++# endif
++#endif
++#ifdef HAVE_STRING_H
++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
++# include <memory.h>
++# endif
++# include <string.h>
++#endif
++#ifdef HAVE_STRINGS_H
++# include <strings.h>
++#endif
++#ifdef HAVE_INTTYPES_H
++# include <inttypes.h>
++#endif
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++#ifdef HAVE_UNISTD_H
++# include <unistd.h>
++#endif"
++
+ enable_option_checking=no
+ ac_subst_vars='LTLIBOBJS
+ LIBOBJS
+ subdirs
+ NVPTX_RUN
++EGREP
++GREP
++CPP
+ CUDA_DRIVER_LDFLAGS
+ CUDA_DRIVER_CPPFLAGS
+ AR
+@@ -635,7 +675,8 @@ LIBS
+ CPPFLAGS
+ CXX
+ CXXFLAGS
+-CCC'
++CCC
++CPP'
+ ac_subdirs_all='libiberty'
+
+ # Initialize some variables set by options.
+@@ -1267,6 +1308,7 @@ Some influential environment variables:
+ you have headers in a nonstandard directory <include dir>
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
++ CPP C preprocessor
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+@@ -1575,6 +1617,203 @@ $as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
+
+ } # ac_fn_c_check_decl
++
++# ac_fn_c_try_cpp LINENO
++# ----------------------
++# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
++ac_fn_c_try_cpp ()
++{
++ as_lineno=${as_lineno-"$1"}
as_lineno_stack=as_lineno_stack=$as_lineno_stack
++ if { { ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
++$as_echo "$ac_try_echo"; } >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
++ ac_status=$?
++ if test -s conftest.err; then
++ grep -v '^ *+' conftest.err >conftest.er1
++ cat conftest.er1 >&5
++ mv -f conftest.er1 conftest.err
++ fi
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then :
++ ac_retval=0
++else
++ $as_echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_retval=1
++fi
++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
++ return $ac_retval
++
++} # ac_fn_c_try_cpp
++
++# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
++# -------------------------------------------------------
++# Tests whether HEADER exists, giving a warning if it cannot be compiled using
++# the include files in INCLUDES and setting the cache variable VAR
++# accordingly.
++ac_fn_c_check_header_mongrel ()
++{
++ as_lineno=${as_lineno-"$1"}
as_lineno_stack=as_lineno_stack=$as_lineno_stack
++ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
++$as_echo_n "checking for $2... " >&6; }
++if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
++ $as_echo_n "(cached) " >&6
++fi
++eval ac_res=\$$3
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
++$as_echo "$ac_res" >&6; }
++else
++ # Is the header compilable?
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
++$as_echo_n "checking $2 usability... " >&6; }
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++$4
++#include <$2>
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ac_header_compiler=yes
++else
++ ac_header_compiler=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler"
>&5
++$as_echo "$ac_header_compiler" >&6; }
++
++# Is the header present?
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
++$as_echo_n "checking $2 presence... " >&6; }
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <$2>
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++ ac_header_preproc=yes
++else
++ ac_header_preproc=no
++fi
++rm -f conftest.err conftest.$ac_ext
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc"
>&5
++$as_echo "$ac_header_preproc" >&6; }
++
++# So? What about this header?
++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
++ yes:no: )
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler,
rejected by the preprocessor!" >&5
++$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the
preprocessor!" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the
compiler's result" >&5
++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result"
>&2;}
++ ;;
++ no:yes:* )
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be
compiled" >&5
++$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing
prerequisite headers?" >&5
++$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?"
>&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf
documentation" >&5
++$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section
\"Present But Cannot Be Compiled\"" >&5
++$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be
Compiled\"" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the
compiler's result" >&5
++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result"
>&2;}
++ ;;
++esac
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
++$as_echo_n "checking for $2... " >&6; }
++if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
++ $as_echo_n "(cached) " >&6
++else
++ eval "$3=\$ac_header_compiler"
++fi
++eval ac_res=\$$3
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
++$as_echo "$ac_res" >&6; }
++fi
++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
++
++} # ac_fn_c_check_header_mongrel
++
++# ac_fn_c_try_run LINENO
++# ----------------------
++# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
++# that executables *can* be run.
++ac_fn_c_try_run ()
++{
++ as_lineno=${as_lineno-"$1"}
as_lineno_stack=as_lineno_stack=$as_lineno_stack
++ if { { ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
++$as_echo "$ac_try_echo"; } >&5
++ (eval "$ac_link") 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
++ { { case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
++$as_echo "$ac_try_echo"; } >&5
++ (eval "$ac_try") 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }; }; then :
++ ac_retval=0
++else
++ $as_echo "$as_me: program exited with status $ac_status" >&5
++ $as_echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_retval=$ac_status
++fi
++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
++ return $ac_retval
++
++} # ac_fn_c_try_run
++
++# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
++# -------------------------------------------------------
++# Tests whether HEADER exists and can be compiled using the include files in
++# INCLUDES, setting the cache variable VAR accordingly.
++ac_fn_c_check_header_compile ()
++{
++ as_lineno=${as_lineno-"$1"}
as_lineno_stack=as_lineno_stack=$as_lineno_stack
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
++$as_echo_n "checking for $2... " >&6; }
++if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++$4
++#include <$2>
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ eval "$3=yes"
++else
++ eval "$3=no"
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++eval ac_res=\$$3
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
++$as_echo "$ac_res" >&6; }
++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
++
++} # ac_fn_c_check_header_compile
+ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+@@ -3284,6 +3523,418 @@ cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_CUGETERRORSTRING $ac_have_decl
+ _ACEOF
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
>&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C
preprocessor" >&5
++$as_echo_n "checking how to run the C preprocessor... " >&6; }
++# On Suns, sometimes $CPP names a directory.
++if test -n "$CPP" && test -d "$CPP"; then
++ CPP=
++fi
++if test -z "$CPP"; then
++ if test "${ac_cv_prog_CPP+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ # Double quotes because CPP needs to be expanded
++ for CPP in "$CC -E" "$CC -E -traditional-cpp"
"/lib/cpp"
++ do
++ ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++ Syntax error
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++
++else
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether nonexistent headers
++ # can be detected and how.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ac_nonexistent.h>
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++ # Broken: success on invalid input.
++continue
++else
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.$ac_ext
++
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then :
++ break
++fi
++
++ done
++ ac_cv_prog_CPP=$CPP
++
++fi
++ CPP=$ac_cv_prog_CPP
++else
++ ac_cv_prog_CPP=$CPP
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
++$as_echo "$CPP" >&6; }
++ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++ Syntax error
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++
++else
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether nonexistent headers
++ # can be detected and how.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ac_nonexistent.h>
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++ # Broken: success on invalid input.
++continue
++else
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.$ac_ext
++
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then :
++
++else
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':"
>&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error "C preprocessor \"$CPP\" fails sanity check
++See \`config.log' for more details." "$LINENO" 5; }
++fi
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
>&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines
and -e" >&5
++$as_echo_n "checking for grep that handles long lines and -e... " >&6;
}
++if test "${ac_cv_path_GREP+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -z "$GREP"; then
++ ac_path_GREP_found=false
++ # Loop through the user's path and test for each of PROGNAME-LIST
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in grep ggrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_GREP" && $as_test_x
"$ac_path_GREP"; } || continue
++# Check for GNU ac_path_GREP and select it if it is found.
++ # Check for GNU $ac_path_GREP
++case `"$ac_path_GREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
++*)
++ ac_count=0
++ $as_echo_n 0123456789 >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ $as_echo 'GREP' >> "conftest.nl"
++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' <
"conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 ||
break
++ as_fn_arith $ac_count + 1 && ac_count=$as_val
++ if test $ac_count -gt ${ac_path_GREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_GREP="$ac_path_GREP"
++ ac_path_GREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++ $ac_path_GREP_found && break 3
++ done
++ done
++ done
++IFS=$as_save_IFS
++ if test -z "$ac_cv_path_GREP"; then
++ as_fn_error "no acceptable grep could be found in
$PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
++ fi
++else
++ ac_cv_path_GREP=$GREP
++fi
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
++$as_echo "$ac_cv_path_GREP" >&6; }
++ GREP="$ac_cv_path_GREP"
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
++$as_echo_n "checking for egrep... " >&6; }
++if test "${ac_cv_path_EGREP+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ if test -z "$EGREP"; then
++ ac_path_EGREP_found=false
++ # Loop through the user's path and test for each of PROGNAME-LIST
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x
"$ac_path_EGREP"; } || continue
++# Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ $as_echo_n 0123456789 >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ $as_echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl"
>"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 ||
break
++ as_fn_arith $ac_count + 1 && ac_count=$as_val
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++ $ac_path_EGREP_found && break 3
++ done
++ done
++ done
++IFS=$as_save_IFS
++ if test -z "$ac_cv_path_EGREP"; then
++ as_fn_error "no acceptable egrep could be found in
$PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
++ fi
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++ fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP"
>&5
++$as_echo "$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files"
>&5
++$as_echo_n "checking for ANSI C header files... " >&6; }
++if test "${ac_cv_header_stdc+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ac_cv_header_stdc=yes
++else
++ ac_cv_header_stdc=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <string.h>
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "memchr" >/dev/null 2>&1; then :
++
++else
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++fi
++
++if test $ac_cv_header_stdc = yes; then
++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdlib.h>
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "free" >/dev/null 2>&1; then :
++
++else
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++fi
++
++if test $ac_cv_header_stdc = yes; then
++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
++ if test "$cross_compiling" = yes; then :
++ :
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ctype.h>
++#include <stdlib.h>
++#if ((' ' & 0x0FF) == 0x020)
++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
++#else
++# define ISLOWER(c) \
++ (('a' <= (c) && (c) <= 'i') \
++ || ('j' <= (c) && (c) <= 'r') \
++ || ('s' <= (c) && (c) <= 'z'))
++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
++#endif
++
++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
++int
++main ()
++{
++ int i;
++ for (i = 0; i < 256; i++)
++ if (XOR (islower (i), ISLOWER (i))
++ || toupper (i) != TOUPPER (i))
++ return 2;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++
++else
++ ac_cv_header_stdc=no
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc"
>&5
++$as_echo "$ac_cv_header_stdc" >&6; }
++if test $ac_cv_header_stdc = yes; then
++
++$as_echo "#define STDC_HEADERS 1" >>confdefs.h
++
++fi
++
++# On IRIX 5.3, sys/types and inttypes.h are conflicting.
++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
++ inttypes.h stdint.h unistd.h
++do :
++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
++ac_fn_c_check_header_compile "$LINENO" "$ac_header"
"$as_ac_Header" "$ac_includes_default
++"
++eval as_val=\$$as_ac_Header
++ if test "x$as_val" = x""yes; then :
++ cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
++
++for ac_header in unistd.h sys/stat.h
++do :
++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header"
"$as_ac_Header" "$ac_includes_default"
++eval as_val=\$$as_ac_Header
++ if test "x$as_val" = x""yes; then :
++ cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra programs to build
requiring -lcuda" >&5
+ $as_echo_n "checking for extra programs to build requiring -lcuda... "
>&6; }
diff --git a/sources b/sources
index 976fa15..cb0d743 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
-SHA512 (isl-0.14.tar.xz) =
cf43868d466d6ff08c5e15345d222ad153e8c4e86831f9854df716eb914c6c15f4c44b73aa6e0b16eb556d1a4d3c26af6f71e85421bf464cbbd053d5f3c515ee
-SHA512 (cloog-0.18.3.tar.gz) =
e1bb557b69d38dde7a6b7acde661005bec2c3b5ffa75df32514bff70c8bfe6a12befe24c0448b85e87cf818f3a83cdec2b54066592b7d300c818611085ce17fb
-SHA512 (gcc-6.3.1-20170118.tar.bz2) =
a2c6261687dc44e980c81c3be04162873195f7e5ed3ceacdde0544f6e4f2d081eef12fe5f73f2f5ac7007dbd823c0e6d1ff5a5e0e7135c46fcc30efce3960def
+SHA512 (gcc-8.2.1-20190109.tar.xz) =
d699b52baa2c54a71f2fef2dd77701baa836737975938d67fb532f1a54638b1442fc04b560fd74e66b44195e4de9ce485100b9bdbac569e4c3abad053a96bc33
+SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) =
94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04
+SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) =
a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1
SHA512 (ghdl.20190129git3c30e3b.tar.bz2) =
79573bca36ab66e01bdff11adbdfbaddfe5a6db59b90e6cea95c7d99c27ecd8ea67e1d18deef6486687c79ee459ae65b8dd5f6485ff1fc968fd36d87cf9b4439
commit 92550b3e8ad1a7edf8dfa8d5975f95120558bada
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 18:13:28 2019 +0100
add changelog entry
diff --git a/ghdl.spec b/ghdl.spec
index 60e9452..eb223ca 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -730,6 +730,9 @@ popd
%endif
%changelog
+* Tue Jan 29 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-0.20190129git3c30e3b.0
+- update to 0.35dev (20190129git3c30e3b)
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.35dev-1.20180520git66bb071.0
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
commit 875797883fb500068d185672deef1bb4e69174c9
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 17:44:41 2019 +0100
update ghdl to 20190129git3c30e3b
diff --git a/ghdl-llvmflags.patch b/ghdl-llvmflags.patch
new file mode 100644
index 0000000..2f94e7a
--- /dev/null
+++ b/ghdl-llvmflags.patch
@@ -0,0 +1,11 @@
+--- ghdl/src/ortho/llvm4-nodebug/Makefile 2019-01-29 17:30:36.024252822 +0100
++++ ghdl/src/ortho/llvm4-nodebug/Makefile 2019-01-29 17:31:18.958454509 +0100
+@@ -15,7 +15,7 @@
+ $(LDFLAGS) `$(LLVM_CONFIG) --ldflags --libs --system-libs`
+
+ llvm-cbindings.o: $(ortho_srcdir)/llvm4-nodebug/llvm-cbindings.cpp
+- $(CXX) -c `$(LLVM_CONFIG) --cxxflags` -o $@ $<
++ $(CXX) -c `$(LLVM_CONFIG) --cxxflags|sed -e s,-fstack-clash-protection,,` -o $@ $<
+
+ clean:
+ $(RM) -f *.o *.ali ortho_code_main
diff --git a/ghdl.spec b/ghdl.spec
index e8efc41..60e9452 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -2,7 +2,7 @@
%global SVNREV 244565
%global gcc_version 6.3.1
%global ghdlver 0.35dev
-%global ghdlgitrev .20180520git66bb071
+%global ghdlgitrev .20190129git3c30e3b
%ifarch %{ix86} x86_64
%bcond_without mcode
@@ -64,6 +64,7 @@ Patch13: gcc6-libsanitize-aarch64-va42.patch
Patch90: gcc6-compile.patch
Patch91: gcc6-ucontext.patch
Source100: ghdl%{ghdlgitrev}.tar.bz2
+Patch100: ghdl-llvmflags.patch
# Both following patches have been sent to upstream mailing list:
# From: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
# To: ghdl-discuss(a)gna.org
@@ -277,7 +278,9 @@ rm -f libgo/go/crypto/elliptic/p224{,_test}.go
%patch90 -p0 -b .compile~
%patch91 -p0 -b .ucontext~
-%patch200 -p0 -b .upf
+%patch200 -p0 -b .upf~
+
+%patch100 -p0 -b .llvmflags~
%if %{without gnatwae}
perl -i -pe 's,-gnatwae,,' ghdl/dist/gcc/Make-lang.in
diff --git a/sources b/sources
index e90882b..976fa15 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
SHA512 (isl-0.14.tar.xz) =
cf43868d466d6ff08c5e15345d222ad153e8c4e86831f9854df716eb914c6c15f4c44b73aa6e0b16eb556d1a4d3c26af6f71e85421bf464cbbd053d5f3c515ee
SHA512 (cloog-0.18.3.tar.gz) =
e1bb557b69d38dde7a6b7acde661005bec2c3b5ffa75df32514bff70c8bfe6a12befe24c0448b85e87cf818f3a83cdec2b54066592b7d300c818611085ce17fb
SHA512 (gcc-6.3.1-20170118.tar.bz2) =
a2c6261687dc44e980c81c3be04162873195f7e5ed3ceacdde0544f6e4f2d081eef12fe5f73f2f5ac7007dbd823c0e6d1ff5a5e0e7135c46fcc30efce3960def
-SHA512 (ghdl.20180520git66bb071.tar.bz2) =
6e2382ff656cb59ada5dc79caba470447cbc5b65080616f51154a73bd238fbc0783e10f095915745f3efc7bcb2a7b249d01f81396452c8af6cee67c8905cf82c
+SHA512 (ghdl.20190129git3c30e3b.tar.bz2) =
79573bca36ab66e01bdff11adbdfbaddfe5a6db59b90e6cea95c7d99c27ecd8ea67e1d18deef6486687c79ee459ae65b8dd5f6485ff1fc968fd36d87cf9b4439
commit 00ecfa5fab763480b82c1f4cf11261d5ad90ea09
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Wed Jan 30 14:59:49 2019 +0100
add changelog entry
diff --git a/ghdl.spec b/ghdl.spec
index 45a48a3..28fab7d 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -843,7 +843,10 @@ popd
%endif
%changelog
-* Tue Jan 29 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-0.20190129git3c30e3b.0
+* Wed Jan 30 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190129git3c30e3b.1
+- update base gcc to 8.2.1
+
+* Tue Jan 29 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-1.20190129git3c30e3b.0
- update to 0.35dev (20190129git3c30e3b)
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.35dev-1.20180520git66bb071.0
commit 0bedb380d4c004953c96ed53535342de27a91384
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Wed Jan 30 14:58:51 2019 +0100
add missing BR
diff --git a/ghdl.spec b/ghdl.spec
index b19c805..45a48a3 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -247,6 +247,7 @@ Requires: libgcc >= %{gcc_version}-%{release}
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
+BuildRequires: gcc-gnat
# for x86, we also build the mcode version; if on x86_64, we need some 32bit libraries
%if %{with llvm}
BuildRequires: libedit-devel
commit 9fa85946e589d5d70d28f94d865ba16a0c112599
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 19:35:21 2019 +0100
fix requires
diff --git a/ghdl.spec b/ghdl.spec
index 16bd6de..b19c805 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -112,7 +112,7 @@
Summary: A VHDL simulator, using the GCC technology
Name: ghdl
Version: %{ghdlver}
-Release: 1%{ghdlgitrev}.0%{?dist}
+Release: 1%{ghdlgitrev}.1%{?dist}
License: GPLv2+ and GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
LGPLv2+ and BSD
URL:
http://ghdl.free.fr/
# The source for this package was pulled from upstream's vcs. Use the
@@ -242,8 +242,7 @@ Requires: binutils >= 2.31
%else
Requires: binutils >= 2.24
%endif
-Requires: libgcc >= %{version}-%{release}
-Requires: libgomp = %{version}-%{release}
+Requires: libgcc >= %{gcc_version}-%{release}
BuildRequires: autoconf
BuildRequires: automake
commit 6defe8ce1391c5727822e4444c4c946b854bb9db
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 19:27:16 2019 +0100
remove some superfluous man pages
diff --git a/ghdl.spec b/ghdl.spec
index 8f6fb96..16bd6de 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -187,10 +187,7 @@ BuildRequires: binutils >= 2.31
%else
BuildRequires: binutils >= 2.24
%endif
-# While gcc doesn't include statically linked binaries, during testing
-# -static is used several times.
-BuildRequires: glibc-static
-BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
+BuildRequires: zlib-devel, gettext, bison, flex, sharutils
BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
BuildRequires: systemtap-sdt-devel >= 1.3
BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
@@ -347,7 +344,7 @@ that tracks signal updates and schedules processes.
%endif
%prep
-%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 100
+%setup -q -n gcc-%{gcc_version}-%{DATE} -a 1 -a 2 -a 100
%patch0 -p0 -b .hack~
%patch2 -p0 -b .i386-libgomp~
%patch3 -p0 -b .sparc-config-detection~
@@ -413,10 +410,6 @@ rm -f gcc/testsuite/go.test/test/chan/goroutines.go
perl -i -pe 's,-gnatwae,,' ghdl/dist/gcc/Make-lang.in
%endif
-pushd cloog-%{cloog_version}
-./autogen.sh
-popd
-
%ifarch %{ix86} x86_64
%if %{with mcode}
cp -r ghdl ghdl-mcode
@@ -786,7 +779,7 @@ pushd %{buildroot}
.%{_infodir}/{cpp,cppinternals,gcc,gccinstall,gccint}.info* \
.%{_infodir}/{libgomp,libquadmath}.info* \
.%{_datadir}/locale/*/LC_MESSAGES/{gcc,cpplib}.mo \
- .%{_mandir}/man1/{cpp,gcc,gcov}.1* \
+ .%{_mandir}/man1/{cpp,gcc,gcov,gcov-dump,gcov-tool}.1* \
.%{_mandir}/man7/{fsf-funding,gfdl,gpl}.7* \
.%{_prefix}/lib/libgcc_s.* \
.%{_prefix}/lib/libmudflap.* \
commit a6190ce3bb7cb992a64f1b8f6da6693a51b1b39f
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 18:50:18 2019 +0100
initial update to gcc8
diff --git a/cloog-0.18.1-ppc64le-config.patch b/cloog-0.18.1-ppc64le-config.patch
deleted file mode 100644
index a280e20..0000000
--- a/cloog-0.18.1-ppc64le-config.patch
+++ /dev/null
@@ -1,717 +0,0 @@
---- cloog-0.18.1/m4/libtool.m4.jj 2013-10-11 09:27:45.000000000 +0200
-+++ cloog-0.18.1/m4/libtool.m4 2014-04-11 18:24:56.607493726 +0200
-@@ -1312,7 +1312,7 @@ ia64-*-hpux*)
- rm -rf conftest*
- ;;
-
--x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
- s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
-@@ -1333,7 +1333,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
- ;;
- esac
- ;;
-- ppc64-*linux*|powerpc64-*linux*)
-+ powerpc64le-*linux*)
-+ LD="${LD-ld} -m elf32lppclinux"
-+ ;;
-+ powerpc64-*linux*)
- LD="${LD-ld} -m elf32ppclinux"
- ;;
- s390x-*linux*)
-@@ -1352,7 +1355,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
- x86_64-*linux*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
-- ppc*-*linux*|powerpc*-*linux*)
-+ powerpcle-*linux*)
-+ LD="${LD-ld} -m elf64lppc"
-+ ;;
-+ powerpc-*linux*)
- LD="${LD-ld} -m elf64ppc"
- ;;
- s390*-*linux*|s390*-*tpf*)
---- cloog-0.18.1/autoconf/config.sub.jj 2013-10-11 09:27:45.000000000 +0200
-+++ cloog-0.18.1/autoconf/config.sub 2014-04-11 18:24:56.608493721 +0200
-@@ -1,24 +1,18 @@
- #! /bin/sh
- # Configuration validation subroutine script.
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--# 2011, 2012 Free Software Foundation, Inc.
--
--timestamp='2012-04-18'
--
--# This file is (in principle) common to ALL GNU software.
--# The presence of a machine in this file suggests that SOME GNU software
--# can handle that machine. It does not imply ALL GNU software can.
--#
--# 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
--# the Free Software Foundation; either version 2 of the License, or
-+# Copyright 1992-2013 Free Software Foundation, Inc.
-+
-+timestamp='2013-10-01'
-+
-+# 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
-+# the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--# GNU General Public License for more details.
-+# This program is distributed in the hope that it will be useful, but
-+# WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, see <
http://www.gnu.org/licenses/>.
-@@ -26,11 +20,12 @@ timestamp='2012-04-18'
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
-+# the same distribution terms that you use for the rest of that
-+# program. This Exception is an additional permission under section 7
-+# of the GNU General Public License, version 3 ("GPLv3").
-
-
--# Please send patches to <config-patches(a)gnu.org>. Submit a context
--# diff and a properly formatted GNU ChangeLog entry.
-+# Please send patches with a ChangeLog entry to config-patches(a)gnu.org.
- #
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
-@@ -73,9 +68,7 @@ Report bugs and patches to <config-patch
- version="\
- GNU config.sub ($timestamp)
-
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
--2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
--Free Software Foundation, Inc.
-+Copyright 1992-2013 Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -123,7 +116,7 @@ esac
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
-@@ -156,7 +149,7 @@ case $os in
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-- -apple | -axis | -knuth | -cray | -microblaze)
-+ -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
-@@ -259,10 +252,12 @@ case $basic_machine in
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
-- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-- | be32 | be64 \
-+ | arc | arceb \
-+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-+ | avr | avr32 \
-+ | be32 | be64 \
- | bfin \
-- | c4x | clipper \
-+ | c4x | c8051 | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | epiphany \
- | fido | fr30 | frv \
-@@ -270,10 +265,11 @@ case $basic_machine in
- | hexagon \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
-+ | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
-- | maxq | mb | microblaze | mcore | mep | metag \
-+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
-@@ -291,16 +287,17 @@ case $basic_machine in
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
-+ | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
-- | nios | nios2 \
-+ | nios | nios2 | nios2eb | nios2el \
- | ns16k | ns32k \
- | open8 \
-- | or32 \
-+ | or1k | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pyramid \
-@@ -328,7 +325,7 @@ case $basic_machine in
- c6x)
- basic_machine=tic6x-unknown
- ;;
-- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
-+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
-@@ -370,13 +367,13 @@ case $basic_machine in
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
-- | clipper-* | craynv-* | cydra-* \
-+ | c8051-* | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-@@ -385,11 +382,13 @@ case $basic_machine in
- | hexagon-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
-+ | k1om-* \
- | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
-+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-+ | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
-@@ -407,12 +406,13 @@ case $basic_machine in
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-+ | mipsr5900-* | mipsr5900el-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nds32-* | nds32le-* | nds32be-* \
-- | nios-* | nios2-* \
-+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | open8-* \
- | orion-* \
-@@ -788,11 +788,15 @@ case $basic_machine in
- basic_machine=ns32k-utek
- os=-sysv
- ;;
-- microblaze)
-+ microblaze*)
- basic_machine=microblaze-xilinx
- ;;
-+ mingw64)
-+ basic_machine=x86_64-pc
-+ os=-mingw64
-+ ;;
- mingw32)
-- basic_machine=i386-pc
-+ basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
-@@ -828,7 +832,7 @@ case $basic_machine in
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- msys)
-- basic_machine=i386-pc
-+ basic_machine=i686-pc
- os=-msys
- ;;
- mvs)
-@@ -1019,7 +1023,11 @@ case $basic_machine in
- basic_machine=i586-unknown
- os=-pw32
- ;;
-- rdos)
-+ rdos | rdos64)
-+ basic_machine=x86_64-pc
-+ os=-rdos
-+ ;;
-+ rdos32)
- basic_machine=i386-pc
- os=-rdos
- ;;
-@@ -1346,21 +1354,21 @@ case $os in
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-- | -sym* | -kopensolaris* \
-+ | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-- | -openbsd* | -solidbsd* \
-+ | -bitrig* | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-- | -mingw32* | -linux-gnu* | -linux-android* \
-- | -linux-newlib* | -linux-uclibc* \
-+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-@@ -1492,9 +1500,6 @@ case $os in
- -aros*)
- os=-aros
- ;;
-- -kaos*)
-- os=-kaos
-- ;;
- -zvmoe)
- os=-zvmoe
- ;;
-@@ -1543,6 +1548,9 @@ case $basic_machine in
- c4x-* | tic4x-*)
- os=-coff
- ;;
-+ c8051-*)
-+ os=-elf
-+ ;;
- hexagon-*)
- os=-elf
- ;;
-@@ -1586,6 +1594,9 @@ case $basic_machine in
- mips*-*)
- os=-elf
- ;;
-+ or1k-*)
-+ os=-elf
-+ ;;
- or32-*)
- os=-coff
- ;;
---- cloog-0.18.1/autoconf/config.guess.jj 2013-10-11 09:27:45.000000000 +0200
-+++ cloog-0.18.1/autoconf/config.guess 2014-04-11 18:24:56.608493721 +0200
-@@ -1,14 +1,12 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
--# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--# 2011, 2012 Free Software Foundation, Inc.
-+# Copyright 1992-2013 Free Software Foundation, Inc.
-
--timestamp='2012-02-10'
-+timestamp='2013-06-10'
-
- # 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
--# the Free Software Foundation; either version 2 of the License, or
-+# the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful, but
-@@ -22,19 +20,17 @@ timestamp='2012-02-10'
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
--# the same distribution terms that you use for the rest of that program.
--
--
--# Originally written by Per Bothner. Please send patches (context
--# diff format) to <config-patches(a)gnu.org> and include a ChangeLog
--# entry.
-+# the same distribution terms that you use for the rest of that
-+# program. This Exception is an additional permission under section 7
-+# of the GNU General Public License, version 3 ("GPLv3").
- #
--# This script attempts to guess a canonical system name similar to
--# config.sub. If it succeeds, it prints the system name on stdout, and
--# exits with 0. Otherwise, it exits with 1.
-+# Originally written by Per Bothner.
- #
- # You can get the latest version of this script from:
- #
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.gu...
-+#
-+# Please send patches with a ChangeLog entry to config-patches(a)gnu.org.
-+
-
- me=`echo "$0" | sed -e 's,.*/,,'`
-
-@@ -54,9 +50,7 @@ version="\
- GNU config.guess ($timestamp)
-
- Originally written by Per Bothner.
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
--2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
--Free Software Foundation, Inc.
-+Copyright 1992-2013 Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` |
- UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
- UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-+case "${UNAME_SYSTEM}" in
-+Linux|GNU|GNU/*)
-+ # If the system lacks a compiler, then just pick glibc.
-+ # We could probably try harder.
-+ LIBC=gnu
-+
-+ eval $set_cc_for_build
-+ cat <<-EOF > $dummy.c
-+ #include <features.h>
-+ #if defined(__UCLIBC__)
-+ LIBC=uclibc
-+ #elif defined(__dietlibc__)
-+ LIBC=dietlibc
-+ #else
-+ LIBC=gnu
-+ #endif
-+ EOF
-+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-+ ;;
-+esac
-+
- # Note: order is significant - the case branches are not exclusive.
-
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-@@ -200,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
- exit ;;
-+ *:Bitrig:*:*)
-+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-+ exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-@@ -302,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
-- arm:riscos:*:*|arm:RISCOS:*:*)
-+ arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-@@ -801,6 +820,9 @@ EOF
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
-+ *:MINGW64*:*)
-+ echo ${UNAME_MACHINE}-pc-mingw64
-+ exit ;;
- *:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
-@@ -852,21 +874,21 @@ EOF
- exit ;;
- *:GNU:*:*)
- # the GNU system
-- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo
${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo
${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
-- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr
'[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr
'[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e
's/[-(].*//'`-${LIBC}
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- aarch64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- aarch64_be:Linux:*:*)
- UNAME_MACHINE=aarch64_be
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-@@ -879,59 +901,54 @@ EOF
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep -q ld.so.1
-- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
-+ arc:Linux:*:* | arceb:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- arm*:Linux:*:*)
- eval $set_cc_for_build
- if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_EABI__
- then
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- else
- if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_PCS_VFP
- then
-- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
- else
-- echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
- fi
- fi
- exit ;;
- avr32*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- cris:Linux:*:*)
-- echo ${UNAME_MACHINE}-axis-linux-gnu
-+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
- exit ;;
- crisv32:Linux:*:*)
-- echo ${UNAME_MACHINE}-axis-linux-gnu
-+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
- exit ;;
- frv:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- hexagon:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- i*86:Linux:*:*)
-- LIBC=gnu
-- eval $set_cc_for_build
-- sed 's/^ //' << EOF >$dummy.c
-- #ifdef __dietlibc__
-- LIBC=dietlibc
-- #endif
--EOF
-- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
- exit ;;
- ia64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- m32r*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- m68*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
-@@ -950,54 +967,63 @@ EOF
- #endif
- EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu";
exit; }
-+ test x"${CPU}" != x && { echo
"${CPU}-unknown-linux-${LIBC}"; exit; }
- ;;
-+ or1k:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-+ exit ;;
- or32:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- padre:Linux:*:*)
-- echo sparc-unknown-linux-gnu
-+ echo sparc-unknown-linux-${LIBC}
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
-- echo hppa64-unknown-linux-gnu
-+ echo hppa64-unknown-linux-${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2`
in
-- PA7*) echo hppa1.1-unknown-linux-gnu ;;
-- PA8*) echo hppa2.0-unknown-linux-gnu ;;
-- *) echo hppa-unknown-linux-gnu ;;
-+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-+ *) echo hppa-unknown-linux-${LIBC} ;;
- esac
- exit ;;
- ppc64:Linux:*:*)
-- echo powerpc64-unknown-linux-gnu
-+ echo powerpc64-unknown-linux-${LIBC}
- exit ;;
- ppc:Linux:*:*)
-- echo powerpc-unknown-linux-gnu
-+ echo powerpc-unknown-linux-${LIBC}
-+ exit ;;
-+ ppc64le:Linux:*:*)
-+ echo powerpc64le-unknown-linux-${LIBC}
-+ exit ;;
-+ ppcle:Linux:*:*)
-+ echo powerpcle-unknown-linux-${LIBC}
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
-- echo ${UNAME_MACHINE}-ibm-linux
-+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
- exit ;;
- sh64*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- sh*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- tile*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- vax:Linux:*:*)
-- echo ${UNAME_MACHINE}-dec-linux-gnu
-+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
- exit ;;
- x86_64:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- xtensa*:Linux:*:*)
-- echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-@@ -1201,6 +1227,9 @@ EOF
- BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
-+ x86_64:Haiku:*:*)
-+ echo x86_64-unknown-haiku
-+ exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
-@@ -1227,19 +1256,21 @@ EOF
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-- case $UNAME_PROCESSOR in
-- i386)
-- eval $set_cc_for_build
-- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-- grep IS_64BIT_ARCH >/dev/null
-- then
-- UNAME_PROCESSOR="x86_64"
-- fi
-- fi ;;
-- unknown) UNAME_PROCESSOR=powerpc ;;
-- esac
-+ eval $set_cc_for_build
-+ if test "$UNAME_PROCESSOR" = unknown ; then
-+ UNAME_PROCESSOR=powerpc
-+ fi
-+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-+ grep IS_64BIT_ARCH >/dev/null
-+ then
-+ case $UNAME_PROCESSOR in
-+ i386) UNAME_PROCESSOR=x86_64 ;;
-+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
-+ esac
-+ fi
-+ fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
-@@ -1256,7 +1287,7 @@ EOF
- NEO-?:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
- exit ;;
-- NSE-?:NONSTOP_KERNEL:*:*)
-+ NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
-@@ -1330,9 +1361,6 @@ EOF
- exit ;;
- esac
-
--#echo '(No uname command or uname output not recognized.)' 1>&2
--#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}"
1>&2
--
- eval $set_cc_for_build
- cat >$dummy.c <<EOF
- #ifdef _SEQUENT_
---- cloog-0.18.1/configure.jj 2013-10-11 09:27:47.000000000 +0200
-+++ cloog-0.18.1/configure 2014-04-11 18:24:56.611493706 +0200
-@@ -6383,7 +6383,7 @@ ia64-*-hpux*)
- rm -rf conftest*
- ;;
-
--x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
- s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
-@@ -6408,7 +6408,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
- ;;
- esac
- ;;
-- ppc64-*linux*|powerpc64-*linux*)
-+ powerpc64le-*linux*)
-+ LD="${LD-ld} -m elf32lppclinux"
-+ ;;
-+ powerpc64-*linux*)
- LD="${LD-ld} -m elf32ppclinux"
- ;;
- s390x-*linux*)
-@@ -6427,7 +6430,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
- x86_64-*linux*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
-- ppc*-*linux*|powerpc*-*linux*)
-+ powerpcle-*linux*)
-+ LD="${LD-ld} -m elf64lppc"
-+ ;;
-+ powerpc-*linux*)
- LD="${LD-ld} -m elf64ppc"
- ;;
- s390*-*linux*|s390*-*tpf*)
diff --git a/gcc6-aarch64-async-unw-tables.patch b/gcc6-aarch64-async-unw-tables.patch
deleted file mode 100644
index feec149..0000000
--- a/gcc6-aarch64-async-unw-tables.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-2014-04-07 Richard Henderson <rth(a)redhat.com>
-
- * common/config/aarch64/aarch64-common.c (TARGET_OPTION_INIT_STRUCT):
- Define.
- (aarch64_option_init_struct): New function.
-
---- gcc/common/config/aarch64/aarch64-common.c
-+++ gcc/common/config/aarch64/aarch64-common.c
-@@ -39,6 +39,9 @@
- #undef TARGET_OPTION_OPTIMIZATION_TABLE
- #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
-
-+#undef TARGET_OPTION_INIT_STRUCT
-+#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
-+
- /* Set default optimization options. */
- static const struct default_options aarch_option_optimization_table[] =
- {
-@@ -47,6 +50,16 @@ static const struct default_options aarch_option_optimization_table[]
=
- { OPT_LEVELS_NONE, 0, NULL, 0 }
- };
-
-+/* Implement TARGET_OPTION_INIT_STRUCT. */
-+
-+static void
-+aarch64_option_init_struct (struct gcc_options *opts)
-+{
-+ /* By default, always emit DWARF-2 unwind info. This allows debugging
-+ without maintaining a stack frame back-chain. */
-+ opts->x_flag_asynchronous_unwind_tables = 1;
-+}
-+
- /* Implement TARGET_HANDLE_OPTION.
- This function handles the target specific options for CPU/target selection.
-
diff --git a/gcc6-compile.patch b/gcc6-compile.patch
deleted file mode 100644
index 2e59ce8..0000000
--- a/gcc6-compile.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gcc/ubsan.c.x 2017-03-03 18:25:26.758115557 +0100
-+++ gcc/ubsan.c 2017-03-03 18:25:57.592511802 +0100
-@@ -1471,7 +1471,7 @@
-
- expanded_location xloc = expand_location (loc);
- if (xloc.file == NULL || strncmp (xloc.file, "\1", 2) == 0
-- || xloc.file == '\0' || xloc.file[0] == '\xff'
-+ || xloc.file[0] == '\0' || xloc.file[0] == '\xff'
- || xloc.file[1] == '\xff')
- return false;
-
diff --git a/gcc6-hack.patch b/gcc6-hack.patch
deleted file mode 100644
index 950ff63..0000000
--- a/gcc6-hack.patch
+++ /dev/null
@@ -1,159 +0,0 @@
---- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
-+++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
-@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
- ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
- ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
-
-+DEFAULTMULTIFLAGS :=
-+ifeq ($(MULTISUBDIR),)
-+targ:=$(subst -, ,$(target))
-+arch:=$(word 1,$(targ))
-+ifeq ($(words $(targ)),2)
-+osys:=$(word 2,$(targ))
-+else
-+osys:=$(word 3,$(targ))
-+endif
-+ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch)
$(osys))),)
-+ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
-+DEFAULTMULTIFLAGS := -m64
-+else
-+ifeq ($(strip $(filter-out s390%, $(arch))),)
-+DEFAULTMULTIFLAGS := -m31
-+else
-+DEFAULTMULTIFLAGS := -m32
-+endif
-+endif
-+endif
-+endif
-+
- # exeext should not be used because it's the *host* exeext. We're building
- # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
- # definitions just in case something slips through the safety net provided
- # by recursive make invocations in gcc/ada/Makefile.in
- LIBADA_FLAGS_TO_PASS = \
- "MAKEOVERRIDES=" \
-- "LDFLAGS=$(LDFLAGS)" \
-+ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
- "LN_S=$(LN_S)" \
- "SHELL=$(SHELL)" \
-- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
-- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
-- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
-+ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)
$(DEFAULTMULTIFLAGS)" \
- "PICFLAG_FOR_TARGET=$(PICFLAG)" \
- "THREAD_KIND=$(THREAD_KIND)" \
- "TRACE=$(TRACE)" \
-@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
- "exeext=.exeext.should.not.be.used " \
- 'CC=the.host.compiler.should.not.be.needed' \
- "GCC_FOR_TARGET=$(CC)" \
-- "CFLAGS=$(CFLAGS)"
-+ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
-
- # Rules to build gnatlib.
- .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
---- gcc/ada/sem_util.adb (revision 161677)
-+++ gcc/ada/sem_util.adb (working copy)
-@@ -5487,7 +5487,7 @@ package body Sem_Util is
- Exp : Node_Id;
- Assn : Node_Id;
- Choice : Node_Id;
-- Comp_Type : Entity_Id;
-+ Comp_Type : Entity_Id := Empty;
- Is_Array_Aggr : Boolean;
-
- begin
---- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
-+++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
-@@ -516,6 +516,8 @@ multi-do:
- ADAFLAGS="$(ADAFLAGS) $${flags}" \
- prefix="$(prefix)" \
- exec_prefix="$(exec_prefix)" \
-+ mandir="$(mandir)" \
-+ infodir="$(infodir)" \
- GCJFLAGS="$(GCJFLAGS) $${flags}" \
- GOCFLAGS="$(GOCFLAGS) $${flags}" \
- CXXFLAGS="$(CXXFLAGS) $${flags}" \
---- libjava/Makefile.am.jj 2010-07-09 11:17:33.729604090 +0200
-+++ libjava/Makefile.am 2010-07-09 13:16:41.894375641 +0200
-@@ -710,7 +710,8 @@ if USE_LIBGCJ_BC
- ## later.
- @echo Installing dummy lib libgcj_bc.so.1.0.0; \
- rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-- mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0
$(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so
$(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
- $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
- -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
- rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
---- libjava/Makefile.in.jj 2010-07-09 11:17:34.000000000 +0200
-+++ libjava/Makefile.in 2010-07-09 13:18:07.542572270 +0200
-@@ -12665,7 +12665,8 @@ install-exec-hook: install-binPROGRAMS i
- install-libexecsubPROGRAMS
- @USE_LIBGCJ_BC_TRUE@ @echo Installing dummy lib libgcj_bc.so.1.0.0; \
- @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
--@USE_LIBGCJ_BC_TRUE@ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0
$(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+@USE_LIBGCJ_BC_TRUE@ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so
$(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
- @USE_LIBGCJ_BC_TRUE@ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
- @USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
- @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
---- libcpp/macro.c.jj 2015-01-14 11:01:34.000000000 +0100
-+++ libcpp/macro.c 2015-01-14 14:22:19.286949884 +0100
-@@ -2947,8 +2947,6 @@ create_iso_definition (cpp_reader *pfile
- cpp_token *token;
- const cpp_token *ctoken;
- bool following_paste_op = false;
-- const char *paste_op_error_msg =
-- N_("'##' cannot appear at either end of a macro expansion");
- unsigned int num_extra_tokens = 0;
-
- /* Get the first token of the expansion (or the '(' of a
-@@ -3059,7 +3057,8 @@ create_iso_definition (cpp_reader *pfile
- function-like macros, but not at the end. */
- if (following_paste_op)
- {
-- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
-+ cpp_error (pfile, CPP_DL_ERROR,
-+ "'##' cannot appear at either end of a macro expansion");
- return false;
- }
- break;
-@@ -3072,7 +3071,8 @@ create_iso_definition (cpp_reader *pfile
- function-like macros, but not at the beginning. */
- if (macro->count == 1)
- {
-- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
-+ cpp_error (pfile, CPP_DL_ERROR,
-+ "'##' cannot appear at either end of a macro expansion");
- return false;
- }
-
---- libcpp/expr.c.jj 2015-01-14 11:01:34.000000000 +0100
-+++ libcpp/expr.c 2015-01-14 14:35:52.851002344 +0100
-@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
- if ((result & CPP_N_WIDTH) == CPP_N_LARGE
- && CPP_OPTION (pfile, cpp_warn_long_long))
- {
-- const char *message = CPP_OPTION (pfile, cplusplus)
-- ? N_("use of C++11 long long integer constant")
-- : N_("use of C99 long long integer constant");
--
- if (CPP_OPTION (pfile, c99))
- cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
-- 0, message);
-+ 0, CPP_OPTION (pfile, cplusplus)
-+ ? N_("use of C++11 long long integer constant")
-+ : N_("use of C99 long long integer constant"));
- else
- cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
-- virtual_location, 0, message);
-+ virtual_location, 0,
-+ CPP_OPTION (pfile, cplusplus)
-+ ? N_("use of C++11 long long integer constant")
-+ : N_("use of C99 long long integer constant"));
- }
-
- result |= CPP_N_INTEGER;
diff --git a/gcc6-i386-libgomp.patch b/gcc6-i386-libgomp.patch
deleted file mode 100644
index 520561e..0000000
--- a/gcc6-i386-libgomp.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
-+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
-@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
- ;;
- *)
- if test -z "$with_arch"; then
-- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
-+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- fi
- esac
- ;;
diff --git a/gcc6-isl-dl.patch b/gcc6-isl-dl.patch
deleted file mode 100644
index 209ac3f..0000000
--- a/gcc6-isl-dl.patch
+++ /dev/null
@@ -1,585 +0,0 @@
---- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
-+++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
-@@ -1013,7 +1013,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
- # and the system's installed libraries.
- LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
- $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
--BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
-+BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
- $(ZLIB)
- # Any system libraries needed just for GNAT.
- SYSLIBS = @GNAT_LIBEXC@
-@@ -2058,6 +2058,15 @@ $(out_object_file): $(out_file)
- $(common_out_object_file): $(common_out_file)
- $(COMPILE) $<
- $(POSTCOMPILE)
-+
-+graphite%.o : \
-+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite.o : \
-+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite%.o : \
-+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
-+graphite.o : \
-+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
- #
- # Generate header and source files from the machine description,
- # and compile them.
---- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
-+++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
-@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.
- #include <isl/ilp.h>
- #include <isl/schedule.h>
- #include <isl/ast_build.h>
-+#include <dlfcn.h>
-
- #ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
- /* isl 0.15 or later. */
-@@ -47,6 +48,494 @@ along with GCC; see the file COPYING3.
- # define isl_stat_ok 0
- #endif
-
-+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
-+#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_serialize_sccs)
-+#define DYNSYM_SET_YAML_STYLE DYNSYM (isl_printer_set_yaml_style);
-+#else
-+#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_fuse)
-+#define DYNSYM_SET_YAML_STYLE
-+#endif
-+
-+#define DYNSYMS \
-+ DYNSYM (isl_aff_add_coefficient_si); \
-+ DYNSYM (isl_aff_free); \
-+ DYNSYM (isl_aff_get_space); \
-+ DYNSYM (isl_aff_set_coefficient_si); \
-+ DYNSYM (isl_aff_set_constant_si); \
-+ DYNSYM (isl_aff_zero_on_domain); \
-+ DYNSYM (isl_band_free); \
-+ DYNSYM (isl_band_get_children); \
-+ DYNSYM (isl_band_get_partial_schedule); \
-+ DYNSYM (isl_band_has_children); \
-+ DYNSYM (isl_band_list_free); \
-+ DYNSYM (isl_band_list_get_band); \
-+ DYNSYM (isl_band_list_get_ctx); \
-+ DYNSYM (isl_band_list_n_band); \
-+ DYNSYM (isl_band_n_member); \
-+ DYNSYM (isl_basic_map_add_constraint); \
-+ DYNSYM (isl_basic_map_project_out); \
-+ DYNSYM (isl_basic_map_universe); \
-+ DYNSYM (isl_constraint_set_coefficient_si); \
-+ DYNSYM (isl_constraint_set_constant_si); \
-+ DYNSYM (isl_ctx_alloc); \
-+ DYNSYM (isl_ctx_free); \
-+ DYNSYM (isl_equality_alloc); \
-+ DYNSYM (isl_id_alloc); \
-+ DYNSYM (isl_id_copy); \
-+ DYNSYM (isl_id_free); \
-+ DYNSYM (isl_inequality_alloc); \
-+ DYNSYM (isl_local_space_copy); \
-+ DYNSYM (isl_local_space_free); \
-+ DYNSYM (isl_local_space_from_space); \
-+ DYNSYM (isl_local_space_range); \
-+ DYNSYM (isl_map_add_constraint); \
-+ DYNSYM (isl_map_add_dims); \
-+ DYNSYM (isl_map_align_params); \
-+ DYNSYM (isl_map_apply_range); \
-+ DYNSYM (isl_map_copy); \
-+ DYNSYM (isl_map_dim); \
-+ DYNSYM (isl_map_dump); \
-+ DYNSYM (isl_map_equate); \
-+ DYNSYM (isl_map_fix_si); \
-+ DYNSYM (isl_map_flat_product); \
-+ DYNSYM (isl_map_flat_range_product); \
-+ DYNSYM (isl_map_free); \
-+ DYNSYM (isl_map_from_basic_map); \
-+ DYNSYM (isl_map_from_pw_aff); \
-+ DYNSYM (isl_map_from_union_map); \
-+ DYNSYM (isl_map_get_ctx); \
-+ DYNSYM (isl_map_get_space); \
-+ DYNSYM (isl_map_get_tuple_id); \
-+ DYNSYM (isl_map_insert_dims); \
-+ DYNSYM (isl_map_intersect); \
-+ DYNSYM (isl_map_intersect_domain); \
-+ DYNSYM (isl_map_intersect_range); \
-+ DYNSYM (isl_map_is_empty); \
-+ DYNSYM (isl_map_lex_ge); \
-+ DYNSYM (isl_map_lex_le); \
-+ DYNSYM (isl_map_n_out); \
-+ DYNSYM (isl_map_range); \
-+ DYNSYM (isl_map_set_tuple_id); \
-+ DYNSYM (isl_map_universe); \
-+ DYNSYM (isl_options_set_on_error); \
-+ DYNSYM_SCHEDULE_FUSE; \
-+ DYNSYM_SET_YAML_STYLE \
-+ DYNSYM (isl_options_set_schedule_max_constant_term); \
-+ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
-+ DYNSYM (isl_printer_free); \
-+ DYNSYM (isl_printer_print_aff); \
-+ DYNSYM (isl_printer_print_constraint); \
-+ DYNSYM (isl_printer_print_map); \
-+ DYNSYM (isl_printer_print_set); \
-+ DYNSYM (isl_printer_to_file); \
-+ DYNSYM (isl_pw_aff_add); \
-+ DYNSYM (isl_pw_aff_alloc); \
-+ DYNSYM (isl_pw_aff_copy); \
-+ DYNSYM (isl_pw_aff_eq_set); \
-+ DYNSYM (isl_pw_aff_free); \
-+ DYNSYM (isl_pw_aff_from_aff); \
-+ DYNSYM (isl_pw_aff_ge_set); \
-+ DYNSYM (isl_pw_aff_gt_set); \
-+ DYNSYM (isl_pw_aff_is_cst); \
-+ DYNSYM (isl_pw_aff_le_set); \
-+ DYNSYM (isl_pw_aff_lt_set); \
-+ DYNSYM (isl_pw_aff_mul); \
-+ DYNSYM (isl_pw_aff_ne_set); \
-+ DYNSYM (isl_pw_aff_nonneg_set); \
-+ DYNSYM (isl_pw_aff_set_tuple_id); \
-+ DYNSYM (isl_pw_aff_sub); \
-+ DYNSYM (isl_pw_aff_zero_set); \
-+ DYNSYM (isl_schedule_free); \
-+ DYNSYM (isl_schedule_get_band_forest); \
-+ DYNSYM (isl_set_add_constraint); \
-+ DYNSYM (isl_set_add_dims); \
-+ DYNSYM (isl_set_apply); \
-+ DYNSYM (isl_set_coalesce); \
-+ DYNSYM (isl_set_copy); \
-+ DYNSYM (isl_set_dim); \
-+ DYNSYM (isl_set_fix_si); \
-+ DYNSYM (isl_set_free); \
-+ DYNSYM (isl_set_get_space); \
-+ DYNSYM (isl_set_get_tuple_id); \
-+ DYNSYM (isl_set_intersect); \
-+ DYNSYM (isl_set_is_empty); \
-+ DYNSYM (isl_set_n_dim); \
-+ DYNSYM (isl_set_nat_universe); \
-+ DYNSYM (isl_set_project_out); \
-+ DYNSYM (isl_set_set_tuple_id); \
-+ DYNSYM (isl_set_universe); \
-+ DYNSYM (isl_space_add_dims); \
-+ DYNSYM (isl_space_alloc); \
-+ DYNSYM (isl_space_copy); \
-+ DYNSYM (isl_space_dim); \
-+ DYNSYM (isl_space_domain); \
-+ DYNSYM (isl_space_find_dim_by_id); \
-+ DYNSYM (isl_space_free); \
-+ DYNSYM (isl_space_from_domain); \
-+ DYNSYM (isl_space_get_tuple_id); \
-+ DYNSYM (isl_space_params_alloc); \
-+ DYNSYM (isl_space_range); \
-+ DYNSYM (isl_space_set_alloc); \
-+ DYNSYM (isl_space_set_dim_id); \
-+ DYNSYM (isl_space_set_tuple_id); \
-+ DYNSYM (isl_union_map_add_map); \
-+ DYNSYM (isl_union_map_align_params); \
-+ DYNSYM (isl_union_map_apply_domain); \
-+ DYNSYM (isl_union_map_apply_range); \
-+ DYNSYM (isl_union_map_compute_flow); \
-+ DYNSYM (isl_union_map_copy); \
-+ DYNSYM (isl_union_map_empty); \
-+ DYNSYM (isl_union_map_flat_range_product); \
-+ DYNSYM (isl_union_map_foreach_map); \
-+ DYNSYM (isl_union_map_free); \
-+ DYNSYM (isl_union_map_from_map); \
-+ DYNSYM (isl_union_map_get_ctx); \
-+ DYNSYM (isl_union_map_get_space); \
-+ DYNSYM (isl_union_map_gist_domain); \
-+ DYNSYM (isl_union_map_gist_range); \
-+ DYNSYM (isl_union_map_intersect_domain); \
-+ DYNSYM (isl_union_map_is_empty); \
-+ DYNSYM (isl_union_map_subtract); \
-+ DYNSYM (isl_union_map_union); \
-+ DYNSYM (isl_union_set_add_set); \
-+ DYNSYM (isl_union_set_compute_schedule); \
-+ DYNSYM (isl_union_set_copy); \
-+ DYNSYM (isl_union_set_empty); \
-+ DYNSYM (isl_union_set_from_set); \
-+ DYNSYM (isl_aff_add_constant_val); \
-+ DYNSYM (isl_aff_get_coefficient_val); \
-+ DYNSYM (isl_aff_get_ctx); \
-+ DYNSYM (isl_aff_mod_val); \
-+ DYNSYM (isl_ast_build_ast_from_schedule); \
-+ DYNSYM (isl_ast_build_free); \
-+ DYNSYM (isl_ast_build_from_context); \
-+ DYNSYM (isl_ast_build_get_ctx); \
-+ DYNSYM (isl_ast_build_get_schedule); \
-+ DYNSYM (isl_ast_build_get_schedule_space); \
-+ DYNSYM (isl_ast_build_set_before_each_for); \
-+ DYNSYM (isl_ast_build_set_options); \
-+ DYNSYM (isl_ast_expr_free); \
-+ DYNSYM (isl_ast_expr_from_val); \
-+ DYNSYM (isl_ast_expr_get_ctx); \
-+ DYNSYM (isl_ast_expr_get_id); \
-+ DYNSYM (isl_ast_expr_get_op_arg); \
-+ DYNSYM (isl_ast_expr_get_op_n_arg); \
-+ DYNSYM (isl_ast_expr_get_op_type); \
-+ DYNSYM (isl_ast_expr_get_type); \
-+ DYNSYM (isl_ast_expr_get_val); \
-+ DYNSYM (isl_ast_expr_sub); \
-+ DYNSYM (isl_ast_node_block_get_children); \
-+ DYNSYM (isl_ast_node_for_get_body); \
-+ DYNSYM (isl_ast_node_for_get_cond); \
-+ DYNSYM (isl_ast_node_for_get_inc); \
-+ DYNSYM (isl_ast_node_for_get_init); \
-+ DYNSYM (isl_ast_node_for_get_iterator); \
-+ DYNSYM (isl_ast_node_free); \
-+ DYNSYM (isl_ast_node_get_annotation); \
-+ DYNSYM (isl_ast_node_get_type); \
-+ DYNSYM (isl_ast_node_if_get_cond); \
-+ DYNSYM (isl_ast_node_if_get_else); \
-+ DYNSYM (isl_ast_node_if_get_then); \
-+ DYNSYM (isl_ast_node_list_free); \
-+ DYNSYM (isl_ast_node_list_get_ast_node); \
-+ DYNSYM (isl_ast_node_list_n_ast_node); \
-+ DYNSYM (isl_ast_node_user_get_expr); \
-+ DYNSYM (isl_constraint_set_coefficient_val); \
-+ DYNSYM (isl_constraint_set_constant_val); \
-+ DYNSYM (isl_id_get_user); \
-+ DYNSYM (isl_local_space_get_ctx); \
-+ DYNSYM (isl_map_fix_val); \
-+ DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
-+ DYNSYM (isl_printer_print_ast_node); \
-+ DYNSYM (isl_printer_print_str); \
-+ DYNSYM (isl_printer_set_output_format); \
-+ DYNSYM (isl_pw_aff_mod_val); \
-+ DYNSYM (isl_schedule_constraints_compute_schedule); \
-+ DYNSYM (isl_schedule_constraints_on_domain); \
-+ DYNSYM (isl_schedule_constraints_set_coincidence); \
-+ DYNSYM (isl_schedule_constraints_set_proximity); \
-+ DYNSYM (isl_schedule_constraints_set_validity); \
-+ DYNSYM (isl_set_get_dim_id); \
-+ DYNSYM (isl_set_max_val); \
-+ DYNSYM (isl_set_min_val); \
-+ DYNSYM (isl_set_params); \
-+ DYNSYM (isl_space_align_params); \
-+ DYNSYM (isl_space_map_from_domain_and_range); \
-+ DYNSYM (isl_space_set_tuple_name); \
-+ DYNSYM (isl_space_wrap); \
-+ DYNSYM (isl_union_map_from_domain_and_range); \
-+ DYNSYM (isl_union_map_range); \
-+ DYNSYM (isl_union_set_union); \
-+ DYNSYM (isl_union_set_universe); \
-+ DYNSYM (isl_val_2exp); \
-+ DYNSYM (isl_val_add_ui); \
-+ DYNSYM (isl_val_copy); \
-+ DYNSYM (isl_val_free); \
-+ DYNSYM (isl_val_get_num_gmp); \
-+ DYNSYM (isl_val_int_from_gmp); \
-+ DYNSYM (isl_val_int_from_si); \
-+ DYNSYM (isl_val_int_from_ui); \
-+ DYNSYM (isl_val_mul); \
-+ DYNSYM (isl_val_neg); \
-+ DYNSYM (isl_val_sub); \
-+ DYNSYM (isl_printer_print_union_map); \
-+ DYNSYM (isl_pw_aff_get_ctx); \
-+ DYNSYM (isl_val_is_int); \
-+ DYNSYM (isl_ctx_get_max_operations); \
-+ DYNSYM (isl_ctx_set_max_operations); \
-+ DYNSYM (isl_ctx_last_error); \
-+ DYNSYM (isl_ctx_reset_operations); \
-+ DYNSYM (isl_map_coalesce); \
-+ DYNSYM (isl_printer_print_schedule); \
-+ DYNSYM (isl_set_set_dim_id); \
-+ DYNSYM (isl_union_map_coalesce);
-+
-+extern struct isl_pointers_s__
-+{
-+ bool inited;
-+ void *h;
-+#define DYNSYM(x) __typeof (x) *p_##x
-+ DYNSYMS
-+#undef DYNSYM
-+} isl_pointers__;
-+
-+#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
-+#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
-+#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
-+#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
-+#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
-+#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
-+#define isl_band_free (*isl_pointers__.p_isl_band_free)
-+#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
-+#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
-+#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
-+#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
-+#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
-+#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
-+#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
-+#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
-+#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
-+#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
-+#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
-+#define isl_constraint_set_coefficient_si
(*isl_pointers__.p_isl_constraint_set_coefficient_si)
-+#define isl_constraint_set_constant_si
(*isl_pointers__.p_isl_constraint_set_constant_si)
-+#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
-+#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
-+#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
-+#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
-+#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
-+#define isl_id_free (*isl_pointers__.p_isl_id_free)
-+#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
-+#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
-+#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
-+#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
-+#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
-+#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
-+#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
-+#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
-+#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
-+#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
-+#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
-+#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
-+#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
-+#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
-+#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
-+#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
-+#define isl_map_free (*isl_pointers__.p_isl_map_free)
-+#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
-+#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
-+#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
-+#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
-+#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
-+#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
-+#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
-+#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
-+#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
-+#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
-+#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
-+#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
-+#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
-+#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
-+#define isl_map_range (*isl_pointers__.p_isl_map_range)
-+#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
-+#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
-+#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
-+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
-+#define isl_options_set_schedule_serialize_sccs
(*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
-+#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
-+#else
-+#define isl_options_set_schedule_fuse (*isl_pointers__.p_isl_options_set_schedule_fuse)
-+#endif
-+#define isl_options_set_schedule_max_constant_term
(*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
-+#define isl_options_set_schedule_maximize_band_depth
(*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
-+#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
-+#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
-+#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
-+#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
-+#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
-+#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
-+#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
-+#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
-+#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
-+#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
-+#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
-+#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
-+#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
-+#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
-+#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
-+#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
-+#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
-+#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
-+#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
-+#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
-+#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
-+#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
-+#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
-+#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
-+#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
-+#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
-+#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
-+#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
-+#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
-+#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
-+#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
-+#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
-+#define isl_set_free (*isl_pointers__.p_isl_set_free)
-+#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
-+#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
-+#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
-+#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
-+#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
-+#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
-+#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
-+#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
-+#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
-+#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
-+#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
-+#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
-+#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
-+#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
-+#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
-+#define isl_space_free (*isl_pointers__.p_isl_space_free)
-+#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
-+#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
-+#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
-+#define isl_space_range (*isl_pointers__.p_isl_space_range)
-+#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
-+#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
-+#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
-+#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
-+#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
-+#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
-+#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
-+#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
-+#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
-+#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
-+#define isl_union_map_flat_range_product
(*isl_pointers__.p_isl_union_map_flat_range_product)
-+#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
-+#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
-+#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
-+#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
-+#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
-+#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
-+#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
-+#define isl_union_map_intersect_domain
(*isl_pointers__.p_isl_union_map_intersect_domain)
-+#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
-+#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
-+#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
-+#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
-+#define isl_union_set_compute_schedule
(*isl_pointers__.p_isl_union_set_compute_schedule)
-+#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
-+#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
-+#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
-+#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
-+#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
-+#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
-+#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
-+#define isl_ast_build_ast_from_schedule
(*isl_pointers__.p_isl_ast_build_ast_from_schedule)
-+#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
-+#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
-+#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
-+#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
-+#define isl_ast_build_get_schedule_space
(*isl_pointers__.p_isl_ast_build_get_schedule_space)
-+#define isl_ast_build_set_before_each_for
(*isl_pointers__.p_isl_ast_build_set_before_each_for)
-+#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
-+#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
-+#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
-+#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
-+#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
-+#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
-+#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
-+#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
-+#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
-+#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
-+#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
-+#define isl_ast_node_block_get_children
(*isl_pointers__.p_isl_ast_node_block_get_children)
-+#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
-+#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
-+#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
-+#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
-+#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
-+#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
-+#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
-+#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
-+#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
-+#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
-+#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
-+#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
-+#define isl_ast_node_list_get_ast_node
(*isl_pointers__.p_isl_ast_node_list_get_ast_node)
-+#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
-+#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
-+#define isl_constraint_set_coefficient_val
(*isl_pointers__.p_isl_constraint_set_coefficient_val)
-+#define isl_constraint_set_constant_val
(*isl_pointers__.p_isl_constraint_set_constant_val)
-+#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
-+#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
-+#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
-+#define isl_options_set_ast_build_atomic_upper_bound
(*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
-+#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
-+#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
-+#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
-+#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
-+#define isl_schedule_constraints_compute_schedule
(*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
-+#define isl_schedule_constraints_on_domain
(*isl_pointers__.p_isl_schedule_constraints_on_domain)
-+#define isl_schedule_constraints_set_coincidence
(*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
-+#define isl_schedule_constraints_set_proximity
(*isl_pointers__.p_isl_schedule_constraints_set_proximity)
-+#define isl_schedule_constraints_set_validity
(*isl_pointers__.p_isl_schedule_constraints_set_validity)
-+#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
-+#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
-+#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
-+#define isl_set_params (*isl_pointers__.p_isl_set_params)
-+#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
-+#define isl_space_map_from_domain_and_range
(*isl_pointers__.p_isl_space_map_from_domain_and_range)
-+#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
-+#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
-+#define isl_union_map_from_domain_and_range
(*isl_pointers__.p_isl_union_map_from_domain_and_range)
-+#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
-+#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
-+#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
-+#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
-+#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
-+#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
-+#define isl_val_free (*isl_pointers__.p_isl_val_free)
-+#define isl_val_get_num_gmp (*isl_pointers__.p_isl_val_get_num_gmp)
-+#define isl_val_int_from_gmp (*isl_pointers__.p_isl_val_int_from_gmp)
-+#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
-+#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
-+#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
-+#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
-+#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
-+#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
-+#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
-+#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
-+#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
-+#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
-+#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
-+#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
-+#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
-+#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
-+#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
-+#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
-+
- typedef struct poly_dr *poly_dr_p;
-
- typedef struct poly_bb *poly_bb_p;
---- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100
-+++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100
-@@ -54,6 +54,34 @@ along with GCC; see the file COPYING3.
- #include "tree-cfgcleanup.h"
- #include "graphite.h"
-
-+__typeof (isl_pointers__) isl_pointers__;
-+
-+static bool
-+init_isl_pointers (void)
-+{
-+ void *h;
-+
-+ if (isl_pointers__.inited)
-+ return isl_pointers__.h != NULL;
-+ h = dlopen ("libisl.so.13", RTLD_LAZY);
-+ isl_pointers__.h = h;
-+ if (h == NULL)
-+ return false;
-+#define DYNSYM(x) \
-+ do \
-+ { \
-+ union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
-+ u.q = dlsym (h, #x); \
-+ if (u.q == NULL) \
-+ return false; \
-+ isl_pointers__.p_##x = u.p; \
-+ } \
-+ while (0)
-+ DYNSYMS
-+#undef DYNSYM
-+ return true;
-+}
-+
- /* Print global statistics to FILE. */
-
- static void
-@@ -298,6 +326,15 @@ graphite_transform_loops (void)
- if (parallelized_function_p (cfun->decl))
- return;
-
-+ if (number_of_loops (cfun) <= 1)
-+ return;
-+
-+ if (!init_isl_pointers ())
-+ {
-+ sorry ("Graphite loop optimizations cannot be used");
-+ return;
-+ }
-+
- ctx = isl_ctx_alloc ();
- isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT);
- if (!graphite_initialize (ctx))
diff --git a/gcc6-java-nomulti.patch b/gcc6-java-nomulti.patch
deleted file mode 100644
index 17334aa..0000000
--- a/gcc6-java-nomulti.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- libjava/configure.ac.jj 2007-12-07 17:55:50.000000000 +0100
-+++ libjava/configure.ac 2007-12-07 18:36:56.000000000 +0100
-@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode,
- [allow rebuilding of .class and .h files]))
- AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" =
yes)
-
-+AC_ARG_ENABLE(libjava-multilib,
-+ AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
-+if test "$enable_libjava_multilib" = no; then
-+ multilib=no
-+ ac_configure_args="$ac_configure_args --disable-multilib"
-+fi
-+
- # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
- GCC_NO_EXECUTABLES
-
---- libjava/configure.jj 2007-12-07 17:55:50.000000000 +0100
-+++ libjava/configure 2007-12-07 18:39:58.000000000 +0100
-@@ -1021,6 +1021,8 @@ Optional Features:
- default=yes
- --enable-java-maintainer-mode
- allow rebuilding of .class and .h files
-+ --enable-libjava-multilib
-+ build libjava as multilib
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
- --enable-maintainer-mode enable make rules and dependencies not useful
-@@ -1973,6 +1975,16 @@ else
- fi
-
-
-+# Check whether --enable-libjava-multilib was given.
-+if test "${enable_libjava_multilib+set}" = set; then
-+ enableval=$enable_libjava_multilib;
-+fi
-+
-+if test "$enable_libjava_multilib" = no; then
-+ multilib=no
-+ ac_configure_args="$ac_configure_args --disable-multilib"
-+fi
-+
- # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
-
-
diff --git a/gcc6-libgo-p224.patch b/gcc6-libgo-p224.patch
deleted file mode 100644
index ec729cf..0000000
--- a/gcc6-libgo-p224.patch
+++ /dev/null
@@ -1,1123 +0,0 @@
---- libgo/Makefile.am.jj 2014-01-08 13:53:06.000000000 +0100
-+++ libgo/Makefile.am 2014-03-05 15:20:09.938466093 +0100
-@@ -1133,7 +1133,6 @@ go_crypto_ecdsa_files = \
- go/crypto/ecdsa/ecdsa.go
- go_crypto_elliptic_files = \
- go/crypto/elliptic/elliptic.go \
-- go/crypto/elliptic/p224.go \
- go/crypto/elliptic/p256.go
- go_crypto_hmac_files = \
- go/crypto/hmac/hmac.go
---- libgo/Makefile.in.jj 2014-01-08 13:53:06.000000000 +0100
-+++ libgo/Makefile.in 2014-03-05 15:20:20.372465471 +0100
-@@ -1291,7 +1291,6 @@ go_crypto_ecdsa_files = \
-
- go_crypto_elliptic_files = \
- go/crypto/elliptic/elliptic.go \
-- go/crypto/elliptic/p224.go \
- go/crypto/elliptic/p256.go
-
- go_crypto_hmac_files = \
---- libgo/go/crypto/elliptic/elliptic.go.jj 2016-02-05 20:11:20.000000000 +0100
-+++ libgo/go/crypto/elliptic/elliptic.go 2016-02-05 22:36:06.145039321 +0100
-@@ -338,7 +338,6 @@ var p384 *CurveParams
- var p521 *CurveParams
-
- func initAll() {
-- initP224()
- initP256()
- initP384()
- initP521()
---- libgo/go/crypto/elliptic/elliptic_test.go.jj 2016-02-05 20:11:19.000000000 +0100
-+++ libgo/go/crypto/elliptic/elliptic_test.go 2016-02-05 22:37:37.857772875 +0100
-@@ -5,39 +5,16 @@
- package elliptic
-
- import (
-- "crypto/rand"
-- "encoding/hex"
-- "fmt"
- "math/big"
- "testing"
- )
-
--func TestOnCurve(t *testing.T) {
-- p224 := P224()
-- if !p224.IsOnCurve(p224.Params().Gx, p224.Params().Gy) {
-- t.Errorf("FAIL")
-- }
--}
--
--func TestOffCurve(t *testing.T) {
-- p224 := P224()
-- x, y := new(big.Int).SetInt64(1), new(big.Int).SetInt64(1)
-- if p224.IsOnCurve(x, y) {
-- t.Errorf("FAIL: point off curve is claimed to be on the curve")
-- }
-- b := Marshal(p224, x, y)
-- x1, y1 := Unmarshal(p224, b)
-- if x1 != nil || y1 != nil {
-- t.Errorf("FAIL: unmarshalling a point not on the curve succeeded")
-- }
--}
--
- type baseMultTest struct {
- k string
- x, y string
- }
-
--var p224BaseMultTests = []baseMultTest{
-+var p256BaseMultTests = []baseMultTest{
- {
- "1",
- "b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
-@@ -300,47 +277,12 @@ var p224BaseMultTests = []baseMultTest{
- },
- }
-
--func TestBaseMult(t *testing.T) {
-- p224 := P224()
-- for i, e := range p224BaseMultTests {
-- k, ok := new(big.Int).SetString(e.k, 10)
-- if !ok {
-- t.Errorf("%d: bad value for k: %s", i, e.k)
-- }
-- x, y := p224.ScalarBaseMult(k.Bytes())
-- if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y {
-- t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x,
y, e.x, e.y)
-- }
-- if testing.Short() && i > 5 {
-- break
-- }
-- }
--}
--
--func TestGenericBaseMult(t *testing.T) {
-- // We use the P224 CurveParams directly in order to test the generic implementation.
-- p224 := P224().Params()
-- for i, e := range p224BaseMultTests {
-- k, ok := new(big.Int).SetString(e.k, 10)
-- if !ok {
-- t.Errorf("%d: bad value for k: %s", i, e.k)
-- }
-- x, y := p224.ScalarBaseMult(k.Bytes())
-- if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y {
-- t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x,
y, e.x, e.y)
-- }
-- if testing.Short() && i > 5 {
-- break
-- }
-- }
--}
--
- func TestP256BaseMult(t *testing.T) {
- p256 := P256()
- p256Generic := p256.Params()
-
-- scalars :=
make([]*big.Int, 0, len(p224BaseMultTests)+1)
-- for _, e := range p224BaseMultTests {
-+ scalars :=
make([]*big.Int, 0, len(p256BaseMultTests)+1)
-+ for _, e := range p256BaseMultTests {
- k, _ := new(big.Int).SetString(e.k, 10)
- scalars = append(scalars, k)
- }
-@@ -365,7 +307,7 @@ func TestP256Mult(t *testing.T) {
- p256 := P256()
- p256Generic := p256.Params()
-
-- for i, e := range p224BaseMultTests {
-+ for i, e := range p256BaseMultTests {
- x, _ := new(big.Int).SetString(e.x, 16)
- y, _ := new(big.Int).SetString(e.y, 16)
- k, _ := new(big.Int).SetString(e.k, 10)
-@@ -386,7 +328,6 @@ func TestInfinity(t *testing.T) {
- name string
- curve Curve
- }{
-- {"p224", P224()},
- {"p256", P256()},
- }
-
-@@ -419,21 +360,10 @@ func TestInfinity(t *testing.T) {
- }
- }
-
--func BenchmarkBaseMult(b *testing.B) {
-- b.ResetTimer()
-- p224 := P224()
-- e := p224BaseMultTests[25]
-- k, _ := new(big.Int).SetString(e.k, 10)
-- b.StartTimer()
-- for i := 0; i < b.N; i++ {
-- p224.ScalarBaseMult(k.Bytes())
-- }
--}
--
- func BenchmarkBaseMultP256(b *testing.B) {
- b.ResetTimer()
- p256 := P256()
-- e := p224BaseMultTests[25]
-+ e := p256BaseMultTests[25]
- k, _ := new(big.Int).SetString(e.k, 10)
- b.StartTimer()
- for i := 0; i < b.N; i++ {
-@@ -452,32 +382,3 @@ func BenchmarkScalarMultP256(b *testing.
- p256.ScalarMult(x, y, priv)
- }
- }
--
--func TestMarshal(t *testing.T) {
-- p224 := P224()
-- _, x, y, err := GenerateKey(p224, rand.Reader)
-- if err != nil {
-- t.Error(err)
-- return
-- }
-- serialized := Marshal(p224, x, y)
-- xx, yy := Unmarshal(p224, serialized)
-- if xx == nil {
-- t.Error("failed to unmarshal")
-- return
-- }
-- if xx.Cmp(x) != 0 || yy.Cmp(y) != 0 {
-- t.Error("unmarshal returned different values")
-- return
-- }
--}
--
--func TestP224Overflow(t *testing.T) {
-- // This tests for a specific bug in the P224 implementation.
-- p224 := P224()
-- pointData, _ :=
hex.DecodeString("049B535B45FB0A2072398A6831834624C7E32CCFD5A4B933BCEAF77F1DD945E08BBE5178F5EDF5E733388F196D2A631D2E075BB16CBFEEA15B")
-- x, y := Unmarshal(p224, pointData)
-- if !p224.IsOnCurve(x, y) {
-- t.Error("P224 failed to validate a correct point")
-- }
--}
---- libgo/go/crypto/ecdsa/ecdsa_test.go.jj 2016-02-05 20:10:59.000000000 +0100
-+++ libgo/go/crypto/ecdsa/ecdsa_test.go 2016-02-05 22:41:54.916215999 +0100
-@@ -33,7 +33,6 @@ func testKeyGeneration(t *testing.T, c e
- }
-
- func TestKeyGeneration(t *testing.T) {
-- testKeyGeneration(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -98,7 +97,6 @@ func testSignAndVerify(t *testing.T, c e
- }
-
- func TestSignAndVerify(t *testing.T) {
-- testSignAndVerify(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -135,7 +133,6 @@ func testNonceSafety(t *testing.T, c ell
- }
-
- func TestNonceSafety(t *testing.T) {
-- testNonceSafety(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -170,7 +167,6 @@ func testINDCCA(t *testing.T, c elliptic
- }
-
- func TestINDCCA(t *testing.T) {
-- testINDCCA(t, elliptic.P224(), "p224")
- if testing.Short() {
- return
- }
-@@ -236,8 +232,6 @@ func TestVectors(t *testing.T) {
- parts := strings.SplitN(line, ",", 2)
-
- switch parts[0] {
-- case "P-224":
-- pub.Curve = elliptic.P224()
- case "P-256":
- pub.Curve = elliptic.P256()
- case "P-384":
---- libgo/go/crypto/x509/x509.go.jj 2016-02-05 20:11:19.000000000 +0100
-+++ libgo/go/crypto/x509/x509.go 2016-02-05 22:36:06.147039294 +0100
-@@ -334,9 +334,6 @@ func getPublicKeyAlgorithmFromOID(oid as
-
- // RFC 5480, 2.1.1.1. Named Curve
- //
--// secp224r1 OBJECT IDENTIFIER ::= {
--// iso(1) identified-organization(3) certicom(132) curve(0) 33 }
--//
- // secp256r1 OBJECT IDENTIFIER ::= {
- // iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
- // prime(1) 7 }
-@@ -349,7 +346,6 @@ func getPublicKeyAlgorithmFromOID(oid as
- //
- // NB: secp256r1 is equivalent to prime256v1
- var (
-- oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33}
- oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7}
- oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34}
- oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35}
-@@ -357,8 +353,6 @@ var (
-
- func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve {
- switch {
-- case oid.Equal(oidNamedCurveP224):
-- return elliptic.P224()
- case oid.Equal(oidNamedCurveP256):
- return elliptic.P256()
- case oid.Equal(oidNamedCurveP384):
-@@ -371,8 +365,6 @@ func namedCurveFromOID(oid asn1.ObjectId
-
- func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) {
- switch curve {
-- case elliptic.P224():
-- return oidNamedCurveP224, true
- case elliptic.P256():
- return oidNamedCurveP256, true
- case elliptic.P384():
-@@ -1502,7 +1494,7 @@ func signingParamsForPublicKey(pub inter
- pubType = ECDSA
-
- switch pub.Curve {
-- case elliptic.P224(), elliptic.P256():
-+ case elliptic.P256():
- hashFunc = crypto.SHA256
- sigAlgo.Algorithm = oidSignatureECDSAWithSHA256
- case elliptic.P384():
---- libgo/go/crypto/elliptic/p224.go.jj 2016-01-15 10:58:09.000000000 +0100
-+++ libgo/go/crypto/elliptic/p224.go 2016-02-05 22:36:06.147039294 +0100
-@@ -1,765 +0,0 @@
--// Copyright 2012 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--package elliptic
--
--// This is a constant-time, 32-bit implementation of P224. See FIPS 186-3,
--// section D.2.2.
--//
--// See
http://www.imperialviolet.org/2010/12/04/ecc.html ([1]) for background.
--
--import (
-- "math/big"
--)
--
--var p224 p224Curve
--
--type p224Curve struct {
-- *CurveParams
-- gx, gy, b p224FieldElement
--}
--
--func initP224() {
-- // See FIPS 186-3, section D.2.2
-- p224.CurveParams = &CurveParams{Name: "P-224"}
-- p224.P, _ =
new(big.Int).SetString("26959946667150639794667015087019630673557916260026308143510066298881",
10)
-- p224.N, _ =
new(big.Int).SetString("26959946667150639794667015087019625940457807714424391721682722368061",
10)
-- p224.B, _ =
new(big.Int).SetString("b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4",
16)
-- p224.Gx, _ =
new(big.Int).SetString("b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
16)
-- p224.Gy, _ =
new(big.Int).SetString("bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34",
16)
-- p224.BitSize = 224
--
-- p224FromBig(&p224.gx, p224.Gx)
-- p224FromBig(&p224.gy, p224.Gy)
-- p224FromBig(&p224.b, p224.B)
--}
--
--// P224 returns a Curve which implements P-224 (see FIPS 186-3, section D.2.2)
--func P224() Curve {
-- initonce.Do(initAll)
-- return p224
--}
--
--func (curve p224Curve) Params() *CurveParams {
-- return curve.CurveParams
--}
--
--func (curve p224Curve) IsOnCurve(bigX, bigY *big.Int) bool {
-- var x, y p224FieldElement
-- p224FromBig(&x, bigX)
-- p224FromBig(&y, bigY)
--
-- // y = x - 3x + b
-- var tmp p224LargeFieldElement
-- var x3 p224FieldElement
-- p224Square(&x3, &x, &tmp)
-- p224Mul(&x3, &x3, &x, &tmp)
--
-- for i := 0; i < 8; i++ {
-- x[i] *= 3
-- }
-- p224Sub(&x3, &x3, &x)
-- p224Reduce(&x3)
-- p224Add(&x3, &x3, &curve.b)
-- p224Contract(&x3, &x3)
--
-- p224Square(&y, &y, &tmp)
-- p224Contract(&y, &y)
--
-- for i := 0; i < 8; i++ {
-- if y[i] != x3[i] {
-- return false
-- }
-- }
-- return true
--}
--
--func (p224Curve) Add(bigX1, bigY1, bigX2, bigY2 *big.Int) (x, y *big.Int) {
-- var x1, y1, z1, x2, y2, z2, x3, y3, z3 p224FieldElement
--
-- p224FromBig(&x1, bigX1)
-- p224FromBig(&y1, bigY1)
-- if bigX1.Sign() != 0 || bigY1.Sign() != 0 {
-- z1[0] = 1
-- }
-- p224FromBig(&x2, bigX2)
-- p224FromBig(&y2, bigY2)
-- if bigX2.Sign() != 0 || bigY2.Sign() != 0 {
-- z2[0] = 1
-- }
--
-- p224AddJacobian(&x3, &y3, &z3, &x1, &y1, &z1, &x2, &y2,
&z2)
-- return p224ToAffine(&x3, &y3, &z3)
--}
--
--func (p224Curve) Double(bigX1, bigY1 *big.Int) (x, y *big.Int) {
-- var x1, y1, z1, x2, y2, z2 p224FieldElement
--
-- p224FromBig(&x1, bigX1)
-- p224FromBig(&y1, bigY1)
-- z1[0] = 1
--
-- p224DoubleJacobian(&x2, &y2, &z2, &x1, &y1, &z1)
-- return p224ToAffine(&x2, &y2, &z2)
--}
--
--func (p224Curve) ScalarMult(bigX1, bigY1 *big.Int, scalar []byte) (x, y *big.Int) {
-- var x1, y1, z1, x2, y2, z2 p224FieldElement
--
-- p224FromBig(&x1, bigX1)
-- p224FromBig(&y1, bigY1)
-- z1[0] = 1
--
-- p224ScalarMult(&x2, &y2, &z2, &x1, &y1, &z1, scalar)
-- return p224ToAffine(&x2, &y2, &z2)
--}
--
--func (curve p224Curve) ScalarBaseMult(scalar []byte) (x, y *big.Int) {
-- var z1, x2, y2, z2 p224FieldElement
--
-- z1[0] = 1
-- p224ScalarMult(&x2, &y2, &z2, &curve.gx, &curve.gy, &z1,
scalar)
-- return p224ToAffine(&x2, &y2, &z2)
--}
--
--// Field element functions.
--//
--// The field that we're dealing with is /p where p = 2**224 - 2**96 + 1.
--//
--// Field elements are represented by a FieldElement, which is a typedef to an
--// array of 8 uint32's. The value of a FieldElement, a, is:
--// a[0] + 2**28a[1] + 2**56a[1] + ... + 2**196a[7]
--//
--// Using 28-bit limbs means that there's only 4 bits of headroom, which is less
--// than we would really like. But it has the useful feature that we hit 2**224
--// exactly, making the reflections during a reduce much nicer.
--type p224FieldElement [8]uint32
--
--// p224P is the order of the field, represented as a p224FieldElement.
--var p224P = [8]uint32{1, 0, 0, 0xffff000, 0xfffffff, 0xfffffff, 0xfffffff, 0xfffffff}
--
--// p224IsZero returns 1 if a == 0 mod p and 0 otherwise.
--//
--// a[i] < 2**29
--func p224IsZero(a *p224FieldElement) uint32 {
-- // Since a p224FieldElement contains 224 bits there are two possible
-- // representations of 0: 0 and p.
-- var minimal p224FieldElement
-- p224Contract(&minimal, a)
--
-- var isZero, isP uint32
-- for i, v := range minimal {
-- isZero |= v
-- isP |= v - p224P[i]
-- }
--
-- // If either isZero or isP is 0, then we should return 1.
-- isZero |= isZero >> 16
-- isZero |= isZero >> 8
-- isZero |= isZero >> 4
-- isZero |= isZero >> 2
-- isZero |= isZero >> 1
--
-- isP |= isP >> 16
-- isP |= isP >> 8
-- isP |= isP >> 4
-- isP |= isP >> 2
-- isP |= isP >> 1
--
-- // For isZero and isP, the LSB is 0 iff all the bits are zero.
-- result := isZero & isP
-- result = (^result) & 1
--
-- return result
--}
--
--// p224Add computes *out = a+b
--//
--// a[i] + b[i] < 2**32
--func p224Add(out, a, b *p224FieldElement) {
-- for i := 0; i < 8; i++ {
-- out[i] = a[i] + b[i]
-- }
--}
--
--const two31p3 = 1<<31 + 1<<3
--const two31m3 = 1<<31 - 1<<3
--const two31m15m3 = 1<<31 - 1<<15 - 1<<3
--
--// p224ZeroModP31 is 0 mod p where bit 31 is set in all limbs so that we can
--// subtract smaller amounts without underflow. See the section "Subtraction"
in
--// [1] for reasoning.
--var p224ZeroModP31 = []uint32{two31p3, two31m3, two31m3, two31m15m3, two31m3, two31m3,
two31m3, two31m3}
--
--// p224Sub computes *out = a-b
--//
--// a[i], b[i] < 2**30
--// out[i] < 2**32
--func p224Sub(out, a, b *p224FieldElement) {
-- for i := 0; i < 8; i++ {
-- out[i] = a[i] + p224ZeroModP31[i] - b[i]
-- }
--}
--
--// LargeFieldElement also represents an element of the field. The limbs are
--// still spaced 28-bits apart and in little-endian order. So the limbs are at
--// 0, 28, 56, ..., 392 bits, each 64-bits wide.
--type p224LargeFieldElement [15]uint64
--
--const two63p35 = 1<<63 + 1<<35
--const two63m35 = 1<<63 - 1<<35
--const two63m35m19 = 1<<63 - 1<<35 - 1<<19
--
--// p224ZeroModP63 is 0 mod p where bit 63 is set in all limbs. See the section
--// "Subtraction" in [1] for why.
--var p224ZeroModP63 = [8]uint64{two63p35, two63m35, two63m35, two63m35, two63m35m19,
two63m35, two63m35, two63m35}
--
--const bottom12Bits = 0xfff
--const bottom28Bits = 0xfffffff
--
--// p224Mul computes *out = a*b
--//
--// a[i] < 2**29, b[i] < 2**30 (or vice versa)
--// out[i] < 2**29
--func p224Mul(out, a, b *p224FieldElement, tmp *p224LargeFieldElement) {
-- for i := 0; i < 15; i++ {
-- tmp[i] = 0
-- }
--
-- for i := 0; i < 8; i++ {
-- for j := 0; j < 8; j++ {
-- tmp[i+j] += uint64(a[i]) * uint64(b[j])
-- }
-- }
--
-- p224ReduceLarge(out, tmp)
--}
--
--// Square computes *out = a*a
--//
--// a[i] < 2**29
--// out[i] < 2**29
--func p224Square(out, a *p224FieldElement, tmp *p224LargeFieldElement) {
-- for i := 0; i < 15; i++ {
-- tmp[i] = 0
-- }
--
-- for i := 0; i < 8; i++ {
-- for j := 0; j <= i; j++ {
-- r := uint64(a[i]) * uint64(a[j])
-- if i == j {
-- tmp[i+j] += r
-- } else {
-- tmp[i+j] += r << 1
-- }
-- }
-- }
--
-- p224ReduceLarge(out, tmp)
--}
--
--// ReduceLarge converts a p224LargeFieldElement to a p224FieldElement.
--//
--// in[i] < 2**62
--func p224ReduceLarge(out *p224FieldElement, in *p224LargeFieldElement) {
-- for i := 0; i < 8; i++ {
-- in[i] += p224ZeroModP63[i]
-- }
--
-- // Eliminate the coefficients at 2**224 and greater.
-- for i := 14; i >= 8; i-- {
-- in[i-8] -= in[i]
-- in[i-5] += (in[i] & 0xffff) << 12
-- in[i-4] += in[i] >> 16
-- }
-- in[8] = 0
-- // in[0..8] < 2**64
--
-- // As the values become small enough, we start to store them in |out|
-- // and use 32-bit operations.
-- for i := 1; i < 8; i++ {
-- in[i+1] += in[i] >> 28
-- out[i] = uint32(in[i] & bottom28Bits)
-- }
-- in[0] -= in[8]
-- out[3] += uint32(in[8]&0xffff) << 12
-- out[4] += uint32(in[8] >> 16)
-- // in[0] < 2**64
-- // out[3] < 2**29
-- // out[4] < 2**29
-- // out[1,2,5..7] < 2**28
--
-- out[0] = uint32(in[0] & bottom28Bits)
-- out[1] += uint32((in[0] >> 28) & bottom28Bits)
-- out[2] += uint32(in[0] >> 56)
-- // out[0] < 2**28
-- // out[1..4] < 2**29
-- // out[5..7] < 2**28
--}
--
--// Reduce reduces the coefficients of a to smaller bounds.
--//
--// On entry: a[i] < 2**31 + 2**30
--// On exit: a[i] < 2**29
--func p224Reduce(a *p224FieldElement) {
-- for i := 0; i < 7; i++ {
-- a[i+1] += a[i] >> 28
-- a[i] &= bottom28Bits
-- }
-- top := a[7] >> 28
-- a[7] &= bottom28Bits
--
-- // top < 2**4
-- mask := top
-- mask |= mask >> 2
-- mask |= mask >> 1
-- mask <<= 31
-- mask = uint32(int32(mask) >> 31)
-- // Mask is all ones if top != 0, all zero otherwise
--
-- a[0] -= top
-- a[3] += top << 12
--
-- // We may have just made a[0] negative but, if we did, then we must
-- // have added something to a[3], this it's > 2**12. Therefore we can
-- // carry down to a[0].
-- a[3] -= 1 & mask
-- a[2] += mask & (1<<28 - 1)
-- a[1] += mask & (1<<28 - 1)
-- a[0] += mask & (1 << 28)
--}
--
--// p224Invert calculates *out = in**-1 by computing in**(2**224 - 2**96 - 1),
--// i.e. Fermat's little theorem.
--func p224Invert(out, in *p224FieldElement) {
-- var f1, f2, f3, f4 p224FieldElement
-- var c p224LargeFieldElement
--
-- p224Square(&f1, in, &c) // 2
-- p224Mul(&f1, &f1, in, &c) // 2**2 - 1
-- p224Square(&f1, &f1, &c) // 2**3 - 2
-- p224Mul(&f1, &f1, in, &c) // 2**3 - 1
-- p224Square(&f2, &f1, &c) // 2**4 - 2
-- p224Square(&f2, &f2, &c) // 2**5 - 4
-- p224Square(&f2, &f2, &c) // 2**6 - 8
-- p224Mul(&f1, &f1, &f2, &c) // 2**6 - 1
-- p224Square(&f2, &f1, &c) // 2**7 - 2
-- for i := 0; i < 5; i++ { // 2**12 - 2**6
-- p224Square(&f2, &f2, &c)
-- }
-- p224Mul(&f2, &f2, &f1, &c) // 2**12 - 1
-- p224Square(&f3, &f2, &c) // 2**13 - 2
-- for i := 0; i < 11; i++ { // 2**24 - 2**12
-- p224Square(&f3, &f3, &c)
-- }
-- p224Mul(&f2, &f3, &f2, &c) // 2**24 - 1
-- p224Square(&f3, &f2, &c) // 2**25 - 2
-- for i := 0; i < 23; i++ { // 2**48 - 2**24
-- p224Square(&f3, &f3, &c)
-- }
-- p224Mul(&f3, &f3, &f2, &c) // 2**48 - 1
-- p224Square(&f4, &f3, &c) // 2**49 - 2
-- for i := 0; i < 47; i++ { // 2**96 - 2**48
-- p224Square(&f4, &f4, &c)
-- }
-- p224Mul(&f3, &f3, &f4, &c) // 2**96 - 1
-- p224Square(&f4, &f3, &c) // 2**97 - 2
-- for i := 0; i < 23; i++ { // 2**120 - 2**24
-- p224Square(&f4, &f4, &c)
-- }
-- p224Mul(&f2, &f4, &f2, &c) // 2**120 - 1
-- for i := 0; i < 6; i++ { // 2**126 - 2**6
-- p224Square(&f2, &f2, &c)
-- }
-- p224Mul(&f1, &f1, &f2, &c) // 2**126 - 1
-- p224Square(&f1, &f1, &c) // 2**127 - 2
-- p224Mul(&f1, &f1, in, &c) // 2**127 - 1
-- for i := 0; i < 97; i++ { // 2**224 - 2**97
-- p224Square(&f1, &f1, &c)
-- }
-- p224Mul(out, &f1, &f3, &c) // 2**224 - 2**96 - 1
--}
--
--// p224Contract converts a FieldElement to its unique, minimal form.
--//
--// On entry, in[i] < 2**29
--// On exit, in[i] < 2**28
--func p224Contract(out, in *p224FieldElement) {
-- copy(out[:], in[:])
--
-- for i := 0; i < 7; i++ {
-- out[i+1] += out[i] >> 28
-- out[i] &= bottom28Bits
-- }
-- top := out[7] >> 28
-- out[7] &= bottom28Bits
--
-- out[0] -= top
-- out[3] += top << 12
--
-- // We may just have made out[i] negative. So we carry down. If we made
-- // out[0] negative then we know that out[3] is sufficiently positive
-- // because we just added to it.
-- for i := 0; i < 3; i++ {
-- mask := uint32(int32(out[i]) >> 31)
-- out[i] += (1 << 28) & mask
-- out[i+1] -= 1 & mask
-- }
--
-- // We might have pushed out[3] over 2**28 so we perform another, partial,
-- // carry chain.
-- for i := 3; i < 7; i++ {
-- out[i+1] += out[i] >> 28
-- out[i] &= bottom28Bits
-- }
-- top = out[7] >> 28
-- out[7] &= bottom28Bits
--
-- // Eliminate top while maintaining the same value mod p.
-- out[0] -= top
-- out[3] += top << 12
--
-- // There are two cases to consider for out[3]:
-- // 1) The first time that we eliminated top, we didn't push out[3] over
-- // 2**28. In this case, the partial carry chain didn't change any values
-- // and top is zero.
-- // 2) We did push out[3] over 2**28 the first time that we eliminated top.
-- // The first value of top was in [0..16), therefore, prior to eliminating
-- // the first top, 0xfff1000 <= out[3] <= 0xfffffff. Therefore, after
-- // overflowing and being reduced by the second carry chain, out[3] <=
-- // 0xf000. Thus it cannot have overflowed when we eliminated top for the
-- // second time.
--
-- // Again, we may just have made out[0] negative, so do the same carry down.
-- // As before, if we made out[0] negative then we know that out[3] is
-- // sufficiently positive.
-- for i := 0; i < 3; i++ {
-- mask := uint32(int32(out[i]) >> 31)
-- out[i] += (1 << 28) & mask
-- out[i+1] -= 1 & mask
-- }
--
-- // Now we see if the value is >= p and, if so, subtract p.
--
-- // First we build a mask from the top four limbs, which must all be
-- // equal to bottom28Bits if the whole value is >= p. If top4AllOnes
-- // ends up with any zero bits in the bottom 28 bits, then this wasn't
-- // true.
-- top4AllOnes := uint32(0xffffffff)
-- for i := 4; i < 8; i++ {
-- top4AllOnes &= out[i]
-- }
-- top4AllOnes |= 0xf0000000
-- // Now we replicate any zero bits to all the bits in top4AllOnes.
-- top4AllOnes &= top4AllOnes >> 16
-- top4AllOnes &= top4AllOnes >> 8
-- top4AllOnes &= top4AllOnes >> 4
-- top4AllOnes &= top4AllOnes >> 2
-- top4AllOnes &= top4AllOnes >> 1
-- top4AllOnes = uint32(int32(top4AllOnes<<31) >> 31)
--
-- // Now we test whether the bottom three limbs are non-zero.
-- bottom3NonZero := out[0] | out[1] | out[2]
-- bottom3NonZero |= bottom3NonZero >> 16
-- bottom3NonZero |= bottom3NonZero >> 8
-- bottom3NonZero |= bottom3NonZero >> 4
-- bottom3NonZero |= bottom3NonZero >> 2
-- bottom3NonZero |= bottom3NonZero >> 1
-- bottom3NonZero = uint32(int32(bottom3NonZero<<31) >> 31)
--
-- // Everything depends on the value of out[3].
-- // If it's > 0xffff000 and top4AllOnes != 0 then the whole value is >= p
-- // If it's = 0xffff000 and top4AllOnes != 0 and bottom3NonZero != 0,
-- // then the whole value is >= p
-- // If it's < 0xffff000, then the whole value is < p
-- n := out[3] - 0xffff000
-- out3Equal := n
-- out3Equal |= out3Equal >> 16
-- out3Equal |= out3Equal >> 8
-- out3Equal |= out3Equal >> 4
-- out3Equal |= out3Equal >> 2
-- out3Equal |= out3Equal >> 1
-- out3Equal = ^uint32(int32(out3Equal<<31) >> 31)
--
-- // If out[3] > 0xffff000 then n's MSB will be zero.
-- out3GT := ^uint32(int32(n) >> 31)
--
-- mask := top4AllOnes & ((out3Equal & bottom3NonZero) | out3GT)
-- out[0] -= 1 & mask
-- out[3] -= 0xffff000 & mask
-- out[4] -= 0xfffffff & mask
-- out[5] -= 0xfffffff & mask
-- out[6] -= 0xfffffff & mask
-- out[7] -= 0xfffffff & mask
--}
--
--// Group element functions.
--//
--// These functions deal with group elements. The group is an elliptic curve
--// group with a = -3 defined in FIPS 186-3, section D.2.2.
--
--// p224AddJacobian computes *out = a+b where a != b.
--func p224AddJacobian(x3, y3, z3, x1, y1, z1, x2, y2, z2 *p224FieldElement) {
-- // See
http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#addition-p22...
-- var z1z1, z2z2, u1, u2, s1, s2, h, i, j, r, v p224FieldElement
-- var c p224LargeFieldElement
--
-- z1IsZero := p224IsZero(z1)
-- z2IsZero := p224IsZero(z2)
--
-- // Z1Z1 = Z1
-- p224Square(&z1z1, z1, &c)
-- // Z2Z2 = Z2
-- p224Square(&z2z2, z2, &c)
-- // U1 = X1*Z2Z2
-- p224Mul(&u1, x1, &z2z2, &c)
-- // U2 = X2*Z1Z1
-- p224Mul(&u2, x2, &z1z1, &c)
-- // S1 = Y1*Z2*Z2Z2
-- p224Mul(&s1, z2, &z2z2, &c)
-- p224Mul(&s1, y1, &s1, &c)
-- // S2 = Y2*Z1*Z1Z1
-- p224Mul(&s2, z1, &z1z1, &c)
-- p224Mul(&s2, y2, &s2, &c)
-- // H = U2-U1
-- p224Sub(&h, &u2, &u1)
-- p224Reduce(&h)
-- xEqual := p224IsZero(&h)
-- // I = (2*H)
-- for j := 0; j < 8; j++ {
-- i[j] = h[j] << 1
-- }
-- p224Reduce(&i)
-- p224Square(&i, &i, &c)
-- // J = H*I
-- p224Mul(&j, &h, &i, &c)
-- // r = 2*(S2-S1)
-- p224Sub(&r, &s2, &s1)
-- p224Reduce(&r)
-- yEqual := p224IsZero(&r)
-- if xEqual == 1 && yEqual == 1 && z1IsZero == 0 && z2IsZero == 0
{
-- p224DoubleJacobian(x3, y3, z3, x1, y1, z1)
-- return
-- }
-- for i := 0; i < 8; i++ {
-- r[i] <<= 1
-- }
-- p224Reduce(&r)
-- // V = U1*I
-- p224Mul(&v, &u1, &i, &c)
-- // Z3 = ((Z1+Z2)-Z1Z1-Z2Z2)*H
-- p224Add(&z1z1, &z1z1, &z2z2)
-- p224Add(&z2z2, z1, z2)
-- p224Reduce(&z2z2)
-- p224Square(&z2z2, &z2z2, &c)
-- p224Sub(z3, &z2z2, &z1z1)
-- p224Reduce(z3)
-- p224Mul(z3, z3, &h, &c)
-- // X3 = r-J-2*V
-- for i := 0; i < 8; i++ {
-- z1z1[i] = v[i] << 1
-- }
-- p224Add(&z1z1, &j, &z1z1)
-- p224Reduce(&z1z1)
-- p224Square(x3, &r, &c)
-- p224Sub(x3, x3, &z1z1)
-- p224Reduce(x3)
-- // Y3 = r*(V-X3)-2*S1*J
-- for i := 0; i < 8; i++ {
-- s1[i] <<= 1
-- }
-- p224Mul(&s1, &s1, &j, &c)
-- p224Sub(&z1z1, &v, x3)
-- p224Reduce(&z1z1)
-- p224Mul(&z1z1, &z1z1, &r, &c)
-- p224Sub(y3, &z1z1, &s1)
-- p224Reduce(y3)
--
-- p224CopyConditional(x3, x2, z1IsZero)
-- p224CopyConditional(x3, x1, z2IsZero)
-- p224CopyConditional(y3, y2, z1IsZero)
-- p224CopyConditional(y3, y1, z2IsZero)
-- p224CopyConditional(z3, z2, z1IsZero)
-- p224CopyConditional(z3, z1, z2IsZero)
--}
--
--// p224DoubleJacobian computes *out = a+a.
--func p224DoubleJacobian(x3, y3, z3, x1, y1, z1 *p224FieldElement) {
-- var delta, gamma, beta, alpha, t p224FieldElement
-- var c p224LargeFieldElement
--
-- p224Square(&delta, z1, &c)
-- p224Square(&gamma, y1, &c)
-- p224Mul(&beta, x1, &gamma, &c)
--
-- // alpha = 3*(X1-delta)*(X1+delta)
-- p224Add(&t, x1, &delta)
-- for i := 0; i < 8; i++ {
-- t[i] += t[i] << 1
-- }
-- p224Reduce(&t)
-- p224Sub(&alpha, x1, &delta)
-- p224Reduce(&alpha)
-- p224Mul(&alpha, &alpha, &t, &c)
--
-- // Z3 = (Y1+Z1)-gamma-delta
-- p224Add(z3, y1, z1)
-- p224Reduce(z3)
-- p224Square(z3, z3, &c)
-- p224Sub(z3, z3, &gamma)
-- p224Reduce(z3)
-- p224Sub(z3, z3, &delta)
-- p224Reduce(z3)
--
-- // X3 = alpha-8*beta
-- for i := 0; i < 8; i++ {
-- delta[i] = beta[i] << 3
-- }
-- p224Reduce(&delta)
-- p224Square(x3, &alpha, &c)
-- p224Sub(x3, x3, &delta)
-- p224Reduce(x3)
--
-- // Y3 = alpha*(4*beta-X3)-8*gamma
-- for i := 0; i < 8; i++ {
-- beta[i] <<= 2
-- }
-- p224Sub(&beta, &beta, x3)
-- p224Reduce(&beta)
-- p224Square(&gamma, &gamma, &c)
-- for i := 0; i < 8; i++ {
-- gamma[i] <<= 3
-- }
-- p224Reduce(&gamma)
-- p224Mul(y3, &alpha, &beta, &c)
-- p224Sub(y3, y3, &gamma)
-- p224Reduce(y3)
--}
--
--// p224CopyConditional sets *out = *in iff the least-significant-bit of control
--// is true, and it runs in constant time.
--func p224CopyConditional(out, in *p224FieldElement, control uint32) {
-- control <<= 31
-- control = uint32(int32(control) >> 31)
--
-- for i := 0; i < 8; i++ {
-- out[i] ^= (out[i] ^ in[i]) & control
-- }
--}
--
--func p224ScalarMult(outX, outY, outZ, inX, inY, inZ *p224FieldElement, scalar []byte) {
-- var xx, yy, zz p224FieldElement
-- for i := 0; i < 8; i++ {
-- outX[i] = 0
-- outY[i] = 0
-- outZ[i] = 0
-- }
--
-- for _, byte := range scalar {
-- for bitNum := uint(0); bitNum < 8; bitNum++ {
-- p224DoubleJacobian(outX, outY, outZ, outX, outY, outZ)
-- bit := uint32((byte >> (7 - bitNum)) & 1)
-- p224AddJacobian(&xx, &yy, &zz, inX, inY, inZ, outX, outY, outZ)
-- p224CopyConditional(outX, &xx, bit)
-- p224CopyConditional(outY, &yy, bit)
-- p224CopyConditional(outZ, &zz, bit)
-- }
-- }
--}
--
--// p224ToAffine converts from Jacobian to affine form.
--func p224ToAffine(x, y, z *p224FieldElement) (*big.Int, *big.Int) {
-- var zinv, zinvsq, outx, outy p224FieldElement
-- var tmp p224LargeFieldElement
--
-- if isPointAtInfinity := p224IsZero(z); isPointAtInfinity == 1 {
-- return new(big.Int), new(big.Int)
-- }
--
-- p224Invert(&zinv, z)
-- p224Square(&zinvsq, &zinv, &tmp)
-- p224Mul(x, x, &zinvsq, &tmp)
-- p224Mul(&zinvsq, &zinvsq, &zinv, &tmp)
-- p224Mul(y, y, &zinvsq, &tmp)
--
-- p224Contract(&outx, x)
-- p224Contract(&outy, y)
-- return p224ToBig(&outx), p224ToBig(&outy)
--}
--
--// get28BitsFromEnd returns the least-significant 28 bits from buf>>shift,
--// where buf is interpreted as a big-endian number.
--func get28BitsFromEnd(buf []byte, shift uint) (uint32, []byte) {
-- var ret uint32
--
-- for i := uint(0); i < 4; i++ {
-- var b byte
-- if l := len(buf); l > 0 {
-- b = buf[l-1]
-- // We don't remove the byte if we're about to return and we're not
-- // reading all of it.
-- if i != 3 || shift == 4 {
-- buf = buf[:l-1]
-- }
-- }
-- ret |= uint32(b) << (8 * i) >> shift
-- }
-- ret &= bottom28Bits
-- return ret, buf
--}
--
--// p224FromBig sets *out = *in.
--func p224FromBig(out *p224FieldElement, in *big.Int) {
-- bytes := in.Bytes()
-- out[0], bytes = get28BitsFromEnd(bytes, 0)
-- out[1], bytes = get28BitsFromEnd(bytes, 4)
-- out[2], bytes = get28BitsFromEnd(bytes, 0)
-- out[3], bytes = get28BitsFromEnd(bytes, 4)
-- out[4], bytes = get28BitsFromEnd(bytes, 0)
-- out[5], bytes = get28BitsFromEnd(bytes, 4)
-- out[6], bytes = get28BitsFromEnd(bytes, 0)
-- out[7], bytes = get28BitsFromEnd(bytes, 4)
--}
--
--// p224ToBig returns in as a
big.Int.
--func p224ToBig(in *p224FieldElement) *big.Int {
-- var buf [28]byte
-- buf[27] = byte(in[0])
-- buf[26] = byte(in[0] >> 8)
-- buf[25] = byte(in[0] >> 16)
-- buf[24] = byte(((in[0] >> 24) & 0x0f) | (in[1]<<4)&0xf0)
--
-- buf[23] = byte(in[1] >> 4)
-- buf[22] = byte(in[1] >> 12)
-- buf[21] = byte(in[1] >> 20)
--
-- buf[20] = byte(in[2])
-- buf[19] = byte(in[2] >> 8)
-- buf[18] = byte(in[2] >> 16)
-- buf[17] = byte(((in[2] >> 24) & 0x0f) | (in[3]<<4)&0xf0)
--
-- buf[16] = byte(in[3] >> 4)
-- buf[15] = byte(in[3] >> 12)
-- buf[14] = byte(in[3] >> 20)
--
-- buf[13] = byte(in[4])
-- buf[12] = byte(in[4] >> 8)
-- buf[11] = byte(in[4] >> 16)
-- buf[10] = byte(((in[4] >> 24) & 0x0f) | (in[5]<<4)&0xf0)
--
-- buf[9] = byte(in[5] >> 4)
-- buf[8] = byte(in[5] >> 12)
-- buf[7] = byte(in[5] >> 20)
--
-- buf[6] = byte(in[6])
-- buf[5] = byte(in[6] >> 8)
-- buf[4] = byte(in[6] >> 16)
-- buf[3] = byte(((in[6] >> 24) & 0x0f) | (in[7]<<4)&0xf0)
--
-- buf[2] = byte(in[7] >> 4)
-- buf[1] = byte(in[7] >> 12)
-- buf[0] = byte(in[7] >> 20)
--
-- return new(big.Int).SetBytes(buf[:])
--}
---- libgo/go/crypto/elliptic/p224_test.go.jj 2016-01-15 10:58:09.000000000 +0100
-+++ libgo/go/crypto/elliptic/p224_test.go 2016-02-05 22:36:06.148039280 +0100
-@@ -1,47 +0,0 @@
--// Copyright 2012 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--package elliptic
--
--import (
-- "math/big"
-- "testing"
--)
--
--var toFromBigTests = []string{
-- "0",
-- "1",
-- "23",
-- "b70e0cb46bb4bf7f321390b94a03c1d356c01122343280d6105c1d21",
-- "706a46d476dcb76798e6046d89474788d164c18032d268fd10704fa6",
--}
--
--func p224AlternativeToBig(in *p224FieldElement) *big.Int {
-- ret := new(big.Int)
-- tmp := new(big.Int)
--
-- for i := uint(0); i < 8; i++ {
-- tmp.SetInt64(int64(in[i]))
-- tmp.Lsh(tmp, 28*i)
-- ret.Add(ret, tmp)
-- }
-- ret.Mod(ret, p224.P)
-- return ret
--}
--
--func TestToFromBig(t *testing.T) {
-- for i, test := range toFromBigTests {
-- n, _ := new(big.Int).SetString(test, 16)
-- var x p224FieldElement
-- p224FromBig(&x, n)
-- m := p224ToBig(&x)
-- if n.Cmp(m) != 0 {
-- t.Errorf("#%d: %x != %x", i, n, m)
-- }
-- q := p224AlternativeToBig(&x)
-- if n.Cmp(q) != 0 {
-- t.Errorf("#%d: %x != %x (alternative)", i, n, m)
-- }
-- }
--}
---- libgo/go/crypto/elliptic/p256.go.jj 2016-02-05 20:11:19.000000000 +0100
-+++ libgo/go/crypto/elliptic/p256.go 2016-02-05 22:36:06.148039280 +0100
-@@ -235,6 +235,8 @@ func p256ReduceCarry(inout *[p256Limbs]u
- inout[7] += carry << 25
- }
-
-+const bottom28Bits = 0xfffffff
-+
- // p256Sum sets out = in+in2.
- //
- // On entry, in[i]+in2[i] must not overflow a 32-bit word.
-@@ -267,6 +269,7 @@ const (
- two31m2 = 1<<31 - 1<<2
- two31p24m2 = 1<<31 + 1<<24 - 1<<2
- two30m27m2 = 1<<30 - 1<<27 - 1<<2
-+ two31m3 = 1<<31 - 1<<3
- )
-
- // p256Zero31 is 0 mod p.
diff --git a/gcc6-libgomp-omp_h-multilib.patch b/gcc6-libgomp-omp_h-multilib.patch
deleted file mode 100644
index d0e98d1..0000000
--- a/gcc6-libgomp-omp_h-multilib.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-2008-06-09 Jakub Jelinek <jakub(a)redhat.com>
-
- * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
-
---- libgomp/omp.h.in.jj 2008-06-09 13:34:05.000000000 +0200
-+++ libgomp/omp.h.in 2008-06-09 13:34:48.000000000 +0200
-@@ -42,8 +42,8 @@ typedef struct
-
- typedef struct
- {
-- unsigned char _x[@OMP_NEST_LOCK_SIZE@]
-- __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
-+ unsigned char _x[8 + sizeof (void *)]
-+ __attribute__((__aligned__(sizeof (void *))));
- } omp_nest_lock_t;
- #endif
-
diff --git a/gcc6-libsanitize-aarch64-va42.patch b/gcc6-libsanitize-aarch64-va42.patch
deleted file mode 100644
index 72418df..0000000
--- a/gcc6-libsanitize-aarch64-va42.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-2015-01-22 Jakub Jelinek <jakub(a)redhat.com>
-
- * sanitizer_common/sanitizer_platform.h
- (SANITIZER_AARCH64_VMA): Set to 42.
- (SANITIZER_CAN_USE_ALLOCATOR64): Set to 1 on __aarch64__
- if SANITIZER_WORDSIZE is 64.
- (SANITIZER_MMAP_RANGE_SIZE): Define to 1ULL << 42 for
- __aarch64__.
-
---- libsanitizer/sanitizer_common/sanitizer_platform.h.jj 2015-11-23 13:29:55.000000000
+0100
-+++ libsanitizer/sanitizer_common/sanitizer_platform.h 2016-01-15 12:04:08.511206409
+0100
-@@ -82,7 +82,7 @@
- // VMA size definition for architecture that support multiple sizes.
- // AArch64 has 3 VMA sizes: 39, 42 and 48.
- #if !defined(SANITIZER_AARCH64_VMA)
--# define SANITIZER_AARCH64_VMA 39
-+# define SANITIZER_AARCH64_VMA 42
- #else
- # if SANITIZER_AARCH64_VMA != 39 && SANITIZER_AARCH64_VMA != 42
- # error "invalid SANITIZER_AARCH64_VMA size"
-@@ -95,7 +95,7 @@
- // For such platforms build this code with -DSANITIZER_CAN_USE_ALLOCATOR64=0 or
- // change the definition of SANITIZER_CAN_USE_ALLOCATOR64 here.
- #ifndef SANITIZER_CAN_USE_ALLOCATOR64
--# if defined(__mips64) || defined(__aarch64__)
-+# if defined(__mips64)
- # define SANITIZER_CAN_USE_ALLOCATOR64 0
- # else
- # define SANITIZER_CAN_USE_ALLOCATOR64 (SANITIZER_WORDSIZE == 64)
-@@ -107,6 +107,8 @@
- // will still work but will consume more memory for TwoLevelByteMap.
- #if defined(__mips__)
- # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL <<
40)
-+#elif defined(__aarch64__)
-+# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL <<
42)
- #else
- # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL <<
47)
- #endif
diff --git a/gcc6-libstdc++-docs.patch b/gcc6-libstdc++-docs.patch
deleted file mode 100644
index 057cac0..0000000
--- a/gcc6-libstdc++-docs.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100
-+++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100
-@@ -5,6 +5,8 @@
- <a class="link"
href="http://www.fsf.org/"
target="_top">FSF
- </a>
- </p><p>
-+ Release 6.3.0
-+ </p><p>
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation
- License, Version 1.2 or any later version published by the
---- libstdc++-v3/doc/html/api.html.jj 2011-01-03 12:53:21.000000000 +0100
-+++ libstdc++-v3/doc/html/api.html 2011-01-04 18:12:01.672757784 +0100
-@@ -20,7 +20,9 @@
- member functions for the library classes, finding out what is in a
- particular include file, looking at inheritance diagrams, etc.
- </p><p>
-- The API documentation, rendered into HTML, can be viewed online
-+ The API documentation, rendered into HTML, can be viewed locally
-+ <a class="link" href="api/index.html"
target="_top">for the 6.3.0 release</a>,
-+ online
- <a class="link"
href="http://gcc.gnu.org/onlinedocs/"
target="_top">for each GCC release</a>
- and
- <a class="link"
href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.h...
target="_top">
diff --git a/gcc6-libtool-no-rpath.patch b/gcc6-libtool-no-rpath.patch
deleted file mode 100644
index 466c661..0000000
--- a/gcc6-libtool-no-rpath.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-libtool sucks.
---- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100
-+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200
-@@ -5394,6 +5394,7 @@ EOF
- rpath="$finalize_rpath"
- test "$mode" != relink && rpath="$compile_rpath$rpath"
- for libdir in $rpath; do
-+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
-@@ -6071,6 +6072,7 @@ EOF
- rpath=
- hardcode_libdirs=
- for libdir in $compile_rpath $finalize_rpath; do
-+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
-@@ -6120,6 +6122,7 @@ EOF
- rpath=
- hardcode_libdirs=
- for libdir in $finalize_rpath; do
-+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
diff --git a/gcc6-no-add-needed.patch b/gcc6-no-add-needed.patch
deleted file mode 100644
index 4102e1c..0000000
--- a/gcc6-no-add-needed.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-2010-02-08 Roland McGrath <roland(a)redhat.com>
-
- * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
- linker.
- * config/gnu-user.h (LINK_EH_SPEC): Likewise.
- * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
- * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
-
---- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
-+++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
-@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu
- I imagine that other systems will catch up. In the meantime, it
- doesn't harm to make sure that the data exists to be used later. */
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
---- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
-+++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
-@@ -76,7 +76,7 @@ do { \
- Signalize that because we have fde-glibc, we don't need all C shared libs
- linked against -lgcc_s. */
- #undef LINK_EH_SPEC
--#define LINK_EH_SPEC ""
-+#define LINK_EH_SPEC "--no-add-needed "
-
- #undef TARGET_INIT_LIBFUNCS
- #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
---- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
-+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
-@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI
- #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
-
- #undef LINK_GCC_C_SEQUENCE_SPEC
---- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100
-+++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100
-@@ -820,7 +820,7 @@ extern int fixuplabelno;
- -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
-
- #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
diff --git a/gcc6-ppc32-retaddr.patch b/gcc6-ppc32-retaddr.patch
deleted file mode 100644
index 7e8eeb5..0000000
--- a/gcc6-ppc32-retaddr.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-2005-11-28 Jakub Jelinek <jakub(a)redhat.com>
-
- * config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
- read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
- instead of doing an extran indirection from frame_pointer_rtx.
-
- * gcc.dg/20051128-1.c: New test.
-
---- gcc/config/rs6000/rs6000.c.jj 2005-11-26 14:38:01.000000000 +0100
-+++ gcc/config/rs6000/rs6000.c 2005-11-28 20:32:18.000000000 +0100
-@@ -20970,18 +20970,22 @@ rs6000_return_addr (int count, rtx frame
- if (count != 0
- || ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && flag_pic))
- {
-+ rtx x;
- cfun->machine->ra_needs_full_frame = 1;
-
-- return
-- gen_rtx_MEM
-- (Pmode,
-- memory_address
-- (Pmode,
-- plus_constant (Pmode,
-- copy_to_reg
-- (gen_rtx_MEM (Pmode,
-- memory_address (Pmode, frame))),
-- RETURN_ADDRESS_OFFSET)));
-+ if (count == 0)
-+ {
-+ gcc_assert (frame == frame_pointer_rtx);
-+ x = arg_pointer_rtx;
-+ }
-+ else
-+ {
-+ x = memory_address (Pmode, frame);
-+ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
-+ }
-+
-+ x = plus_constant (Pmode, x, RETURN_ADDRESS_OFFSET);
-+ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
- }
-
- cfun->machine->ra_need_lr = 1;
---- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
-+++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
-@@ -0,0 +1,41 @@
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fpic" } */
-+
-+extern void exit (int);
-+extern void abort (void);
-+
-+int b;
-+
-+struct A
-+{
-+ void *pad[147];
-+ void *ra, *h;
-+ long o;
-+};
-+
-+void
-+__attribute__((noinline))
-+foo (struct A *a, void *x)
-+{
-+ __builtin_memset (a, 0, sizeof (a));
-+ if (!b)
-+ exit (0);
-+}
-+
-+void
-+__attribute__((noinline))
-+bar (void)
-+{
-+ struct A a;
-+
-+ __builtin_unwind_init ();
-+ foo (&a, __builtin_return_address (0));
-+}
-+
-+int
-+main (void)
-+{
-+ bar ();
-+ abort ();
-+ return 0;
-+}
diff --git a/gcc6-rh330771.patch b/gcc6-rh330771.patch
deleted file mode 100644
index 102730f..0000000
--- a/gcc6-rh330771.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-2007-10-16 Jakub Jelinek <jakub(a)redhat.com>
-
- * Makefile.am (libgcj_tools_la_LIBADD): Add.
- * Makefile.in: Regenerated.
-
---- libjava/Makefile.am.jj 2009-05-06 08:14:50.000000000 +0200
-+++ libjava/Makefile.am 2009-05-06 10:26:43.000000000 +0200
-@@ -550,7 +550,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
- $(LIBJAVA_LDFLAGS_LIBMATH)
-
--libgcj_tools_la_LIBADD = libgcj.la
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
- $(libgcj_tools_la_version_dep)
- if BUILD_SUBLIBS
---- libjava/Makefile.in.jj 2009-05-06 08:14:49.000000000 +0200
-+++ libjava/Makefile.in 2009-05-06 10:27:18.000000000 +0200
-@@ -1110,7 +1110,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
- $(LIBJAVA_LDFLAGS_LIBMATH)
-
--libgcj_tools_la_LIBADD = libgcj.la
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
- $(libgcj_tools_la_version_dep) $(am__append_19)
- libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS) \
diff --git a/gcc6-sparc-config-detection.patch b/gcc6-sparc-config-detection.patch
deleted file mode 100644
index a37018e..0000000
--- a/gcc6-sparc-config-detection.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
-+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
-@@ -2656,7 +2656,7 @@ sparc-*-rtems*)
- tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h
rtems.h newlib-stdint.h"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
- ;;
--sparc-*-linux*)
-+sparc-*-linux* | sparcv9-*-linux*)
- tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h
glibc-stdint.h sparc/tso.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- case ${target} in
-@@ -2710,7 +2710,7 @@ sparc64-*-rtems*)
- extra_options="${extra_options}"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
- ;;
--sparc64-*-linux*)
-+sparc64*-*-linux*)
- tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h
linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
---- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
-+++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
-@@ -1002,7 +1002,7 @@ sparc-*-elf*)
- tmake_file="${tmake_file} t-fdpbit t-crtfm"
- extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
- ;;
--sparc-*-linux*) # SPARC's running GNU/Linux, libc6
-+sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6
- tmake_file="${tmake_file} t-crtfm"
- if test "${host_address}" = 64; then
- tmake_file="$tmake_file sparc/t-linux64"
-@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
- tmake_file="$tmake_file t-crtfm"
- extra_parts="$extra_parts crtfastmath.o"
- ;;
--sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
-+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
- extra_parts="$extra_parts crtfastmath.o"
- tmake_file="${tmake_file} t-crtfm sparc/t-linux"
- if test "${host_address}" = 64; then
diff --git a/gcc6-ucontext.patch b/gcc6-ucontext.patch
deleted file mode 100644
index dd6b0f1..0000000
--- a/gcc6-ucontext.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- libgcc/config/i386/linux-unwind.h.x 2017-07-12 18:10:21.531812959 +0200
-+++ libgcc/config/i386/linux-unwind.h 2017-07-12 18:11:03.106011137 +0200
-@@ -58,7 +58,7 @@
- if (*(unsigned char *)(pc+0) == 0x48
- && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
- {
-- struct ucontext *uc_ = context->cfa;
-+ ucontext_t *uc_ = context->cfa;
- /* The void * cast is necessary to avoid an aliasing warning.
- The aliasing warning is correct, but should not be a problem
- because it does not alias anything. */
-@@ -138,7 +138,7 @@
- siginfo_t *pinfo;
- void *puc;
- siginfo_t info;
-- struct ucontext uc;
-+ ucontext_t uc;
- } *rt_ = context->cfa;
- /* The void * cast is necessary to avoid an aliasing warning.
- The aliasing warning is correct, but should not be a problem
---- libgcc/config/aarch64/linux-unwind.h.x 2017-07-12 19:29:07.830098788 +0200
-+++ libgcc/config/aarch64/linux-unwind.h 2017-07-12 19:29:28.772691533 +0200
-@@ -52,7 +52,7 @@
- struct rt_sigframe
- {
- siginfo_t info;
-- struct ucontext uc;
-+ ucontext_t uc;
- };
-
- struct rt_sigframe *rt_;
diff --git a/gcc8-Wno-format-security.patch b/gcc8-Wno-format-security.patch
new file mode 100644
index 0000000..cb21e5d
--- /dev/null
+++ b/gcc8-Wno-format-security.patch
@@ -0,0 +1,27 @@
+2017-02-25 Jakub Jelinek <jakub(a)redhat.com>
+
+ * configure.ac: When adding -Wno-format, also add -Wno-format-security.
+ * configure: Regenerated.
+
+--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100
++++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100
+@@ -481,7 +481,7 @@ AC_ARG_ENABLE(build-format-warnings,
+ AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while
building GCC]),
+ [],[enable_build_format_warnings=yes])
+ AS_IF([test $enable_build_format_warnings = no],
+- [wf_opt=-Wno-format],[wf_opt=])
++ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=])
+ ACX_PROG_CXX_WARNING_OPTS(
+ m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
+ [-Wcast-qual $wf_opt])), [loose_warn])
+--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100
++++ gcc/configure 2017-02-25 12:42:50.041946391 +0100
+@@ -6647,7 +6647,7 @@ else
+ fi
+
+ if test $enable_build_format_warnings = no; then :
+- wf_opt=-Wno-format
++ wf_opt="-Wno-format -Wno-format-security"
+ else
+ wf_opt=
+ fi
diff --git a/gcc8-foffload-default.patch b/gcc8-foffload-default.patch
new file mode 100644
index 0000000..771e1e0
--- /dev/null
+++ b/gcc8-foffload-default.patch
@@ -0,0 +1,117 @@
+2017-01-20 Jakub Jelinek <jakub(a)redhat.com>
+
+ * gcc.c (offload_targets_default): New variable.
+ (process_command): Set it if -foffload is defaulted.
+ (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1
+ into environment if -foffload has been defaulted.
+ * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define.
+ (compile_images_for_offload_targets): If OFFLOAD_TARGET_DEFAULT
+ is in the environment, don't fail if corresponding mkoffload
+ can't be found. Free and clear offload_names if no valid offload
+ is found.
+libgomp/
+ * target.c (gomp_load_plugin_for_device): If a plugin can't be
+ dlopened, assume it has no devices silently.
+
+--- gcc/gcc.c.jj 2017-01-17 10:28:40.000000000 +0100
++++ gcc/gcc.c 2017-01-20 16:26:29.649962902 +0100
+@@ -290,6 +290,10 @@ static const char *spec_host_machine = D
+
+ static char *offload_targets = NULL;
+
++/* Set to true if -foffload has not been used and offload_targets
++ is set to the configured in default. */
++static bool offload_targets_default;
++
+ /* Nonzero if cross-compiling.
+ When -b is used, the value comes from the `specs' file. */
+
+@@ -4457,7 +4461,10 @@ process_command (unsigned int decoded_op
+ /* If the user didn't specify any, default to all configured offload
+ targets. */
+ if (ENABLE_OFFLOADING && offload_targets == NULL)
+- handle_foffload_option (OFFLOAD_TARGETS);
++ {
++ handle_foffload_option (OFFLOAD_TARGETS);
++ offload_targets_default = true;
++ }
+
+ if (output_file
+ && strcmp (output_file, "-") != 0
+@@ -7693,6 +7700,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS ()
+ obstack_grow (&collect_obstack, offload_targets,
+ strlen (offload_targets) + 1);
+ xputenv (XOBFINISH (&collect_obstack, char *));
++ if (offload_targets_default)
++ xputenv ("OFFLOAD_TARGET_DEFAULT=1");
+ }
+
+ free (offload_targets);
+--- gcc/lto-wrapper.c.jj 2017-01-01 12:45:34.000000000 +0100
++++ gcc/lto-wrapper.c 2017-01-20 16:34:18.294016997 +0100
+@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3.
+ /* Environment variable, used for passing the names of offload targets from GCC
+ driver to lto-wrapper. */
+ #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES"
++#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT"
+
+ enum lto_mode_d {
+ LTO_MODE_NONE, /* Not doing LTO. */
+@@ -790,8 +791,10 @@ compile_images_for_offload_targets (unsi
+ if (!target_names)
+ return;
+ unsigned num_targets = parse_env_var (target_names, &names, NULL);
++ const char *target_names_default = getenv (OFFLOAD_TARGET_DEFAULT_ENV);
+
+ int next_name_entry = 0;
++ bool hsa_seen = false;
+ const char *compiler_path = getenv ("COMPILER_PATH");
+ if (!compiler_path)
+ goto out;
+@@ -804,18 +807,32 @@ compile_images_for_offload_targets (unsi
+ /* HSA does not use LTO-like streaming and a different compiler, skip
+ it. */
+ if (strcmp (names[i], "hsa") == 0)
+- continue;
++ {
++ hsa_seen = true;
++ continue;
++ }
+
+ offload_names[next_name_entry]
+ = compile_offload_image (names[i], compiler_path, in_argc, in_argv,
+ compiler_opts, compiler_opt_count,
+ linker_opts, linker_opt_count);
+ if (!offload_names[next_name_entry])
+- fatal_error (input_location,
+- "problem with building target image for %s\n", names[i]);
++ {
++ if (target_names_default != NULL)
++ continue;
++ fatal_error (input_location,
++ "problem with building target image for %s\n",
++ names[i]);
++ }
+ next_name_entry++;
+ }
+
++ if (next_name_entry == 0 && !hsa_seen)
++ {
++ free (offload_names);
++ offload_names = NULL;
++ }
++
+ out:
+ free_array_of_ptrs ((void **) names, num_targets);
+ }
+--- libgomp/target.c.jj 2017-01-01 12:45:52.000000000 +0100
++++ libgomp/target.c 2017-01-20 20:12:13.756710875 +0100
+@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp
+
+ void *plugin_handle = dlopen (plugin_name, RTLD_LAZY);
+ if (!plugin_handle)
+- goto dl_fail;
++ return 0;
+
+ /* Check if all required functions are available in the plugin and store
+ their handlers. None of the symbols can legitimately be NULL,
diff --git a/gcc8-hack.patch b/gcc8-hack.patch
new file mode 100644
index 0000000..515173f
--- /dev/null
+++ b/gcc8-hack.patch
@@ -0,0 +1,124 @@
+--- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
++++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
+@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
+ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+ ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
+
++DEFAULTMULTIFLAGS :=
++ifeq ($(MULTISUBDIR),)
++targ:=$(subst -, ,$(target))
++arch:=$(word 1,$(targ))
++ifeq ($(words $(targ)),2)
++osys:=$(word 2,$(targ))
++else
++osys:=$(word 3,$(targ))
++endif
++ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch)
$(osys))),)
++ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
++DEFAULTMULTIFLAGS := -m64
++else
++ifeq ($(strip $(filter-out s390%, $(arch))),)
++DEFAULTMULTIFLAGS := -m31
++else
++DEFAULTMULTIFLAGS := -m32
++endif
++endif
++endif
++endif
++
+ # exeext should not be used because it's the *host* exeext. We're building
+ # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
+ # definitions just in case something slips through the safety net provided
+ # by recursive make invocations in gcc/ada/Makefile.in
+ LIBADA_FLAGS_TO_PASS = \
+ "MAKEOVERRIDES=" \
+- "LDFLAGS=$(LDFLAGS)" \
++ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
+ "LN_S=$(LN_S)" \
+ "SHELL=$(SHELL)" \
+- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
+- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
+- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)
$(DEFAULTMULTIFLAGS)" \
+ "PICFLAG_FOR_TARGET=$(PICFLAG)" \
+ "THREAD_KIND=$(THREAD_KIND)" \
+ "TRACE=$(TRACE)" \
+@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
+ "exeext=.exeext.should.not.be.used " \
+ 'CC=the.host.compiler.should.not.be.needed' \
+ "GCC_FOR_TARGET=$(CC)" \
+- "CFLAGS=$(CFLAGS)"
++ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
+
+ # Rules to build gnatlib.
+ .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
+--- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
++++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
+@@ -511,6 +511,8 @@ multi-do:
+ ADAFLAGS="$(ADAFLAGS) $${flags}" \
+ prefix="$(prefix)" \
+ exec_prefix="$(exec_prefix)" \
++ mandir="$(mandir)" \
++ infodir="$(infodir)" \
+ GOCFLAGS="$(GOCFLAGS) $${flags}" \
+ CXXFLAGS="$(CXXFLAGS) $${flags}" \
+ LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
+--- libcpp/macro.c.jj 2015-01-14 11:01:34.000000000 +0100
++++ libcpp/macro.c 2015-01-14 14:22:19.286949884 +0100
+@@ -2947,8 +2947,6 @@ create_iso_definition (cpp_reader *pfile
+ cpp_token *token;
+ const cpp_token *ctoken;
+ bool following_paste_op = false;
+- const char *paste_op_error_msg =
+- N_("'##' cannot appear at either end of a macro expansion");
+ unsigned int num_extra_tokens = 0;
+
+ /* Get the first token of the expansion (or the '(' of a
+@@ -3059,7 +3057,8 @@ create_iso_definition (cpp_reader *pfile
+ function-like macros, but not at the end. */
+ if (following_paste_op)
+ {
+- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++ cpp_error (pfile, CPP_DL_ERROR,
++ "'##' cannot appear at either end of a macro expansion");
+ return false;
+ }
+ break;
+@@ -3072,7 +3071,8 @@ create_iso_definition (cpp_reader *pfile
+ function-like macros, but not at the beginning. */
+ if (macro->count == 1)
+ {
+- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++ cpp_error (pfile, CPP_DL_ERROR,
++ "'##' cannot appear at either end of a macro expansion");
+ return false;
+ }
+
+--- libcpp/expr.c.jj 2015-01-14 11:01:34.000000000 +0100
++++ libcpp/expr.c 2015-01-14 14:35:52.851002344 +0100
+@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
+ if ((result & CPP_N_WIDTH) == CPP_N_LARGE
+ && CPP_OPTION (pfile, cpp_warn_long_long))
+ {
+- const char *message = CPP_OPTION (pfile, cplusplus)
+- ? N_("use of C++11 long long integer constant")
+- : N_("use of C99 long long integer constant");
+-
+ if (CPP_OPTION (pfile, c99))
+ cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
+- 0, message);
++ 0, CPP_OPTION (pfile, cplusplus)
++ ? N_("use of C++11 long long integer constant")
++ : N_("use of C99 long long integer constant"));
+ else
+ cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
+- virtual_location, 0, message);
++ virtual_location, 0,
++ CPP_OPTION (pfile, cplusplus)
++ ? N_("use of C++11 long long integer constant")
++ : N_("use of C99 long long integer constant"));
+ }
+
+ result |= CPP_N_INTEGER;
diff --git a/gcc8-i386-libgomp.patch b/gcc8-i386-libgomp.patch
new file mode 100644
index 0000000..520561e
--- /dev/null
+++ b/gcc8-i386-libgomp.patch
@@ -0,0 +1,11 @@
+--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
++++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
+@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
+ ;;
+ *)
+ if test -z "$with_arch"; then
+- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ fi
+ esac
+ ;;
diff --git a/gcc8-isl-dl.patch b/gcc8-isl-dl.patch
new file mode 100644
index 0000000..46d3b0d
--- /dev/null
+++ b/gcc8-isl-dl.patch
@@ -0,0 +1,715 @@
+--- gcc/Makefile.in.jj 2015-06-06 10:00:25.000000000 +0200
++++ gcc/Makefile.in 2015-11-04 14:56:02.643536437 +0100
+@@ -1046,7 +1046,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+ # and the system's installed libraries.
+ LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
+ $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
+-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+ $(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -2196,6 +2196,15 @@ $(out_object_file): $(out_file)
+ $(common_out_object_file): $(common_out_file)
+ $(COMPILE) $<
+ $(POSTCOMPILE)
++
++graphite%.o : \
++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite.o : \
++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite%.o : \
++ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
++graphite.o : \
++ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
+ #
+ # Generate header and source files from the machine description,
+ # and compile them.
+--- gcc/graphite.h.jj 2016-01-27 12:44:06.000000000 +0100
++++ gcc/graphite.h 2016-01-27 13:26:38.309876856 +0100
+@@ -39,6 +39,590 @@ along with GCC; see the file COPYING3.
+ #include <isl/schedule_node.h>
+ #include <isl/id.h>
+ #include <isl/space.h>
++#include <isl/version.h>
++#include <dlfcn.h>
++
++#define DYNSYMS \
++ DYNSYM (isl_aff_add_coefficient_si); \
++ DYNSYM (isl_aff_free); \
++ DYNSYM (isl_aff_get_space); \
++ DYNSYM (isl_aff_set_coefficient_si); \
++ DYNSYM (isl_aff_set_constant_si); \
++ DYNSYM (isl_aff_zero_on_domain); \
++ DYNSYM (isl_band_free); \
++ DYNSYM (isl_band_get_children); \
++ DYNSYM (isl_band_get_partial_schedule); \
++ DYNSYM (isl_band_has_children); \
++ DYNSYM (isl_band_list_free); \
++ DYNSYM (isl_band_list_get_band); \
++ DYNSYM (isl_band_list_get_ctx); \
++ DYNSYM (isl_band_list_n_band); \
++ DYNSYM (isl_band_n_member); \
++ DYNSYM (isl_basic_map_add_constraint); \
++ DYNSYM (isl_basic_map_project_out); \
++ DYNSYM (isl_basic_map_universe); \
++ DYNSYM (isl_constraint_set_coefficient_si); \
++ DYNSYM (isl_constraint_set_constant_si); \
++ DYNSYM (isl_ctx_alloc); \
++ DYNSYM (isl_ctx_free); \
++ DYNSYM (isl_equality_alloc); \
++ DYNSYM (isl_id_alloc); \
++ DYNSYM (isl_id_copy); \
++ DYNSYM (isl_id_free); \
++ DYNSYM (isl_inequality_alloc); \
++ DYNSYM (isl_local_space_copy); \
++ DYNSYM (isl_local_space_free); \
++ DYNSYM (isl_local_space_from_space); \
++ DYNSYM (isl_local_space_range); \
++ DYNSYM (isl_map_add_constraint); \
++ DYNSYM (isl_map_add_dims); \
++ DYNSYM (isl_map_align_params); \
++ DYNSYM (isl_map_apply_range); \
++ DYNSYM (isl_map_copy); \
++ DYNSYM (isl_map_dim); \
++ DYNSYM (isl_map_dump); \
++ DYNSYM (isl_map_equate); \
++ DYNSYM (isl_map_fix_si); \
++ DYNSYM (isl_map_flat_product); \
++ DYNSYM (isl_map_flat_range_product); \
++ DYNSYM (isl_map_free); \
++ DYNSYM (isl_map_from_basic_map); \
++ DYNSYM (isl_map_from_pw_aff); \
++ DYNSYM (isl_map_from_union_map); \
++ DYNSYM (isl_map_get_ctx); \
++ DYNSYM (isl_map_get_space); \
++ DYNSYM (isl_map_get_tuple_id); \
++ DYNSYM (isl_map_insert_dims); \
++ DYNSYM (isl_map_intersect); \
++ DYNSYM (isl_map_intersect_domain); \
++ DYNSYM (isl_map_intersect_range); \
++ DYNSYM (isl_map_is_empty); \
++ DYNSYM (isl_map_lex_ge); \
++ DYNSYM (isl_map_lex_le); \
++ DYNSYM (isl_map_n_out); \
++ DYNSYM (isl_map_range); \
++ DYNSYM (isl_map_set_tuple_id); \
++ DYNSYM (isl_map_universe); \
++ DYNSYM (isl_options_set_on_error); \
++ DYNSYM (isl_options_set_schedule_serialize_sccs); \
++ DYNSYM (isl_printer_set_yaml_style); \
++ DYNSYM (isl_options_set_schedule_max_constant_term); \
++ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
++ DYNSYM (isl_printer_free); \
++ DYNSYM (isl_printer_print_aff); \
++ DYNSYM (isl_printer_print_constraint); \
++ DYNSYM (isl_printer_print_map); \
++ DYNSYM (isl_printer_print_set); \
++ DYNSYM (isl_printer_to_file); \
++ DYNSYM (isl_pw_aff_add); \
++ DYNSYM (isl_pw_aff_alloc); \
++ DYNSYM (isl_pw_aff_copy); \
++ DYNSYM (isl_pw_aff_eq_set); \
++ DYNSYM (isl_pw_aff_free); \
++ DYNSYM (isl_pw_aff_from_aff); \
++ DYNSYM (isl_pw_aff_ge_set); \
++ DYNSYM (isl_pw_aff_gt_set); \
++ DYNSYM (isl_pw_aff_is_cst); \
++ DYNSYM (isl_pw_aff_le_set); \
++ DYNSYM (isl_pw_aff_lt_set); \
++ DYNSYM (isl_pw_aff_mul); \
++ DYNSYM (isl_pw_aff_ne_set); \
++ DYNSYM (isl_pw_aff_nonneg_set); \
++ DYNSYM (isl_pw_aff_set_tuple_id); \
++ DYNSYM (isl_pw_aff_sub); \
++ DYNSYM (isl_pw_aff_zero_set); \
++ DYNSYM (isl_schedule_free); \
++ DYNSYM (isl_schedule_get_band_forest); \
++ DYNSYM (isl_set_add_constraint); \
++ DYNSYM (isl_set_add_dims); \
++ DYNSYM (isl_set_apply); \
++ DYNSYM (isl_set_coalesce); \
++ DYNSYM (isl_set_copy); \
++ DYNSYM (isl_set_dim); \
++ DYNSYM (isl_set_fix_si); \
++ DYNSYM (isl_set_free); \
++ DYNSYM (isl_set_get_space); \
++ DYNSYM (isl_set_get_tuple_id); \
++ DYNSYM (isl_set_intersect); \
++ DYNSYM (isl_set_is_empty); \
++ DYNSYM (isl_set_n_dim); \
++ DYNSYM (isl_set_nat_universe); \
++ DYNSYM (isl_set_project_out); \
++ DYNSYM (isl_set_set_tuple_id); \
++ DYNSYM (isl_set_universe); \
++ DYNSYM (isl_space_add_dims); \
++ DYNSYM (isl_space_alloc); \
++ DYNSYM (isl_space_copy); \
++ DYNSYM (isl_space_dim); \
++ DYNSYM (isl_space_domain); \
++ DYNSYM (isl_space_find_dim_by_id); \
++ DYNSYM (isl_space_free); \
++ DYNSYM (isl_space_from_domain); \
++ DYNSYM (isl_space_get_tuple_id); \
++ DYNSYM (isl_space_params_alloc); \
++ DYNSYM (isl_space_range); \
++ DYNSYM (isl_space_set_alloc); \
++ DYNSYM (isl_space_set_dim_id); \
++ DYNSYM (isl_space_set_tuple_id); \
++ DYNSYM (isl_union_map_add_map); \
++ DYNSYM (isl_union_map_align_params); \
++ DYNSYM (isl_union_map_apply_domain); \
++ DYNSYM (isl_union_map_apply_range); \
++ DYNSYM (isl_union_map_compute_flow); \
++ DYNSYM (isl_union_map_copy); \
++ DYNSYM (isl_union_map_empty); \
++ DYNSYM (isl_union_map_flat_range_product); \
++ DYNSYM (isl_union_map_foreach_map); \
++ DYNSYM (isl_union_map_free); \
++ DYNSYM (isl_union_map_from_map); \
++ DYNSYM (isl_union_map_get_ctx); \
++ DYNSYM (isl_union_map_get_space); \
++ DYNSYM (isl_union_map_gist_domain); \
++ DYNSYM (isl_union_map_gist_range); \
++ DYNSYM (isl_union_map_intersect_domain); \
++ DYNSYM (isl_union_map_is_empty); \
++ DYNSYM (isl_union_map_subtract); \
++ DYNSYM (isl_union_map_union); \
++ DYNSYM (isl_union_set_add_set); \
++ DYNSYM (isl_union_set_compute_schedule); \
++ DYNSYM (isl_union_set_copy); \
++ DYNSYM (isl_union_set_empty); \
++ DYNSYM (isl_union_set_from_set); \
++ DYNSYM (isl_aff_add_constant_val); \
++ DYNSYM (isl_aff_get_coefficient_val); \
++ DYNSYM (isl_aff_get_ctx); \
++ DYNSYM (isl_aff_mod_val); \
++ DYNSYM (isl_ast_build_ast_from_schedule); \
++ DYNSYM (isl_ast_build_free); \
++ DYNSYM (isl_ast_build_from_context); \
++ DYNSYM (isl_ast_build_get_ctx); \
++ DYNSYM (isl_ast_build_get_schedule); \
++ DYNSYM (isl_ast_build_get_schedule_space); \
++ DYNSYM (isl_ast_build_set_before_each_for); \
++ DYNSYM (isl_ast_build_set_options); \
++ DYNSYM (isl_ast_expr_free); \
++ DYNSYM (isl_ast_expr_from_val); \
++ DYNSYM (isl_ast_expr_get_ctx); \
++ DYNSYM (isl_ast_expr_get_id); \
++ DYNSYM (isl_ast_expr_get_op_arg); \
++ DYNSYM (isl_ast_expr_get_op_n_arg); \
++ DYNSYM (isl_ast_expr_get_op_type); \
++ DYNSYM (isl_ast_expr_get_type); \
++ DYNSYM (isl_ast_expr_get_val); \
++ DYNSYM (isl_ast_expr_sub); \
++ DYNSYM (isl_ast_node_block_get_children); \
++ DYNSYM (isl_ast_node_for_get_body); \
++ DYNSYM (isl_ast_node_for_get_cond); \
++ DYNSYM (isl_ast_node_for_get_inc); \
++ DYNSYM (isl_ast_node_for_get_init); \
++ DYNSYM (isl_ast_node_for_get_iterator); \
++ DYNSYM (isl_ast_node_free); \
++ DYNSYM (isl_ast_node_get_annotation); \
++ DYNSYM (isl_ast_node_get_type); \
++ DYNSYM (isl_ast_node_if_get_cond); \
++ DYNSYM (isl_ast_node_if_get_else); \
++ DYNSYM (isl_ast_node_if_get_then); \
++ DYNSYM (isl_ast_node_list_free); \
++ DYNSYM (isl_ast_node_list_get_ast_node); \
++ DYNSYM (isl_ast_node_list_n_ast_node); \
++ DYNSYM (isl_ast_node_user_get_expr); \
++ DYNSYM (isl_constraint_set_coefficient_val); \
++ DYNSYM (isl_constraint_set_constant_val); \
++ DYNSYM (isl_id_get_user); \
++ DYNSYM (isl_local_space_get_ctx); \
++ DYNSYM (isl_map_fix_val); \
++ DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
++ DYNSYM (isl_printer_print_ast_node); \
++ DYNSYM (isl_printer_print_str); \
++ DYNSYM (isl_printer_set_output_format); \
++ DYNSYM (isl_pw_aff_mod_val); \
++ DYNSYM (isl_schedule_constraints_compute_schedule); \
++ DYNSYM (isl_schedule_constraints_on_domain); \
++ DYNSYM (isl_schedule_constraints_set_coincidence); \
++ DYNSYM (isl_schedule_constraints_set_proximity); \
++ DYNSYM (isl_schedule_constraints_set_validity); \
++ DYNSYM (isl_set_get_dim_id); \
++ DYNSYM (isl_set_max_val); \
++ DYNSYM (isl_set_min_val); \
++ DYNSYM (isl_set_params); \
++ DYNSYM (isl_space_align_params); \
++ DYNSYM (isl_space_map_from_domain_and_range); \
++ DYNSYM (isl_space_set_tuple_name); \
++ DYNSYM (isl_space_wrap); \
++ DYNSYM (isl_union_map_from_domain_and_range); \
++ DYNSYM (isl_union_map_range); \
++ DYNSYM (isl_union_set_union); \
++ DYNSYM (isl_union_set_universe); \
++ DYNSYM (isl_val_2exp); \
++ DYNSYM (isl_val_add_ui); \
++ DYNSYM (isl_val_copy); \
++ DYNSYM (isl_val_free); \
++ DYNSYM (isl_val_int_from_si); \
++ DYNSYM (isl_val_int_from_ui); \
++ DYNSYM (isl_val_mul); \
++ DYNSYM (isl_val_neg); \
++ DYNSYM (isl_val_sub); \
++ DYNSYM (isl_printer_print_union_map); \
++ DYNSYM (isl_pw_aff_get_ctx); \
++ DYNSYM (isl_val_is_int); \
++ DYNSYM (isl_ctx_get_max_operations); \
++ DYNSYM (isl_ctx_set_max_operations); \
++ DYNSYM (isl_ctx_last_error); \
++ DYNSYM (isl_ctx_reset_operations); \
++ DYNSYM (isl_map_coalesce); \
++ DYNSYM (isl_printer_print_schedule); \
++ DYNSYM (isl_set_set_dim_id); \
++ DYNSYM (isl_union_map_coalesce); \
++ DYNSYM (isl_multi_val_set_val); \
++ DYNSYM (isl_multi_val_zero); \
++ DYNSYM (isl_options_set_schedule_max_coefficient); \
++ DYNSYM (isl_options_set_tile_scale_tile_loops); \
++ DYNSYM (isl_schedule_copy); \
++ DYNSYM (isl_schedule_get_map); \
++ DYNSYM (isl_schedule_map_schedule_node_bottom_up); \
++ DYNSYM (isl_schedule_node_band_get_permutable); \
++ DYNSYM (isl_schedule_node_band_get_space); \
++ DYNSYM (isl_schedule_node_band_tile); \
++ DYNSYM (isl_schedule_node_child); \
++ DYNSYM (isl_schedule_node_free); \
++ DYNSYM (isl_schedule_node_get_child); \
++ DYNSYM (isl_schedule_node_get_ctx); \
++ DYNSYM (isl_schedule_node_get_type); \
++ DYNSYM (isl_schedule_node_n_children); \
++ DYNSYM (isl_union_map_is_equal); \
++ DYNSYM (isl_union_access_info_compute_flow); \
++ DYNSYM (isl_union_access_info_from_sink); \
++ DYNSYM (isl_union_access_info_set_may_source); \
++ DYNSYM (isl_union_access_info_set_must_source); \
++ DYNSYM (isl_union_access_info_set_schedule); \
++ DYNSYM (isl_union_flow_free); \
++ DYNSYM (isl_union_flow_get_may_dependence); \
++ DYNSYM (isl_union_flow_get_must_dependence); \
++ DYNSYM (isl_aff_var_on_domain); \
++ DYNSYM (isl_multi_aff_from_aff); \
++ DYNSYM (isl_schedule_get_ctx); \
++ DYNSYM (isl_multi_aff_set_tuple_id); \
++ DYNSYM (isl_multi_aff_dim); \
++ DYNSYM (isl_schedule_get_domain); \
++ DYNSYM (isl_union_set_is_empty); \
++ DYNSYM (isl_union_set_get_space); \
++ DYNSYM (isl_union_pw_multi_aff_empty); \
++ DYNSYM (isl_union_set_foreach_set); \
++ DYNSYM (isl_union_set_free); \
++ DYNSYM (isl_multi_union_pw_aff_from_union_pw_multi_aff); \
++ DYNSYM (isl_multi_union_pw_aff_apply_multi_aff); \
++ DYNSYM (isl_schedule_insert_partial_schedule); \
++ DYNSYM (isl_union_pw_multi_aff_free); \
++ DYNSYM (isl_pw_multi_aff_project_out_map); \
++ DYNSYM (isl_union_pw_multi_aff_add_pw_multi_aff); \
++ DYNSYM (isl_schedule_from_domain); \
++ DYNSYM (isl_schedule_sequence); \
++ DYNSYM (isl_ast_build_node_from_schedule); \
++ DYNSYM (isl_ast_node_mark_get_node); \
++ DYNSYM (isl_schedule_node_band_member_get_ast_loop_type); \
++ DYNSYM (isl_schedule_node_band_member_set_ast_loop_type); \
++ DYNSYM (isl_val_n_abs_num_chunks); \
++ DYNSYM (isl_val_get_abs_num_chunks); \
++ DYNSYM (isl_val_int_from_chunks); \
++ DYNSYM (isl_val_is_neg); \
++ DYNSYM (isl_version); \
++ DYNSYM (isl_options_get_on_error); \
++ DYNSYM (isl_ctx_reset_error);
++
++extern struct isl_pointers_s__
++{
++ bool inited;
++ void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++ DYNSYMS
++#undef DYNSYM
++} isl_pointers__;
++
++#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
++#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
++#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
++#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
++#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
++#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
++#define isl_band_free (*isl_pointers__.p_isl_band_free)
++#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
++#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
++#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
++#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
++#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
++#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
++#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
++#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
++#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
++#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
++#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
++#define isl_constraint_set_coefficient_si
(*isl_pointers__.p_isl_constraint_set_coefficient_si)
++#define isl_constraint_set_constant_si
(*isl_pointers__.p_isl_constraint_set_constant_si)
++#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
++#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
++#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
++#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
++#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
++#define isl_id_free (*isl_pointers__.p_isl_id_free)
++#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
++#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
++#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
++#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
++#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
++#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
++#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
++#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
++#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
++#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
++#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
++#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
++#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
++#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
++#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
++#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
++#define isl_map_free (*isl_pointers__.p_isl_map_free)
++#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
++#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
++#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
++#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
++#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
++#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
++#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
++#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
++#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
++#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
++#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
++#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
++#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
++#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
++#define isl_map_range (*isl_pointers__.p_isl_map_range)
++#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
++#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
++#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
++#define isl_options_set_schedule_serialize_sccs
(*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
++#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
++#define isl_options_set_schedule_max_constant_term
(*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
++#define isl_options_set_schedule_maximize_band_depth
(*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
++#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
++#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
++#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
++#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
++#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
++#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
++#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
++#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
++#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
++#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
++#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
++#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
++#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
++#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
++#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
++#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
++#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
++#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
++#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
++#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
++#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
++#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
++#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
++#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
++#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
++#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
++#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
++#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
++#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
++#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
++#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
++#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
++#define isl_set_free (*isl_pointers__.p_isl_set_free)
++#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
++#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
++#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
++#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
++#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
++#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
++#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
++#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
++#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
++#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
++#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
++#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
++#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
++#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
++#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
++#define isl_space_free (*isl_pointers__.p_isl_space_free)
++#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
++#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
++#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
++#define isl_space_range (*isl_pointers__.p_isl_space_range)
++#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
++#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
++#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
++#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
++#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
++#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
++#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
++#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
++#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
++#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
++#define isl_union_map_flat_range_product
(*isl_pointers__.p_isl_union_map_flat_range_product)
++#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
++#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
++#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
++#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
++#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
++#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
++#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
++#define isl_union_map_intersect_domain
(*isl_pointers__.p_isl_union_map_intersect_domain)
++#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
++#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
++#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
++#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
++#define isl_union_set_compute_schedule
(*isl_pointers__.p_isl_union_set_compute_schedule)
++#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
++#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
++#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
++#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
++#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
++#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
++#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
++#define isl_ast_build_ast_from_schedule
(*isl_pointers__.p_isl_ast_build_ast_from_schedule)
++#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
++#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
++#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
++#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
++#define isl_ast_build_get_schedule_space
(*isl_pointers__.p_isl_ast_build_get_schedule_space)
++#define isl_ast_build_set_before_each_for
(*isl_pointers__.p_isl_ast_build_set_before_each_for)
++#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
++#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
++#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
++#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
++#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
++#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
++#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
++#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
++#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
++#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
++#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
++#define isl_ast_node_block_get_children
(*isl_pointers__.p_isl_ast_node_block_get_children)
++#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
++#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
++#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
++#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
++#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
++#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
++#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
++#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
++#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
++#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
++#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
++#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
++#define isl_ast_node_list_get_ast_node
(*isl_pointers__.p_isl_ast_node_list_get_ast_node)
++#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
++#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
++#define isl_constraint_set_coefficient_val
(*isl_pointers__.p_isl_constraint_set_coefficient_val)
++#define isl_constraint_set_constant_val
(*isl_pointers__.p_isl_constraint_set_constant_val)
++#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
++#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
++#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
++#define isl_options_set_ast_build_atomic_upper_bound
(*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
++#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
++#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
++#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
++#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
++#define isl_schedule_constraints_compute_schedule
(*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
++#define isl_schedule_constraints_on_domain
(*isl_pointers__.p_isl_schedule_constraints_on_domain)
++#define isl_schedule_constraints_set_coincidence
(*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
++#define isl_schedule_constraints_set_proximity
(*isl_pointers__.p_isl_schedule_constraints_set_proximity)
++#define isl_schedule_constraints_set_validity
(*isl_pointers__.p_isl_schedule_constraints_set_validity)
++#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
++#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
++#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
++#define isl_set_params (*isl_pointers__.p_isl_set_params)
++#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
++#define isl_space_map_from_domain_and_range
(*isl_pointers__.p_isl_space_map_from_domain_and_range)
++#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
++#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
++#define isl_union_map_from_domain_and_range
(*isl_pointers__.p_isl_union_map_from_domain_and_range)
++#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
++#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
++#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
++#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
++#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
++#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
++#define isl_val_free (*isl_pointers__.p_isl_val_free)
++#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
++#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
++#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
++#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
++#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
++#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
++#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
++#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
++#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
++#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
++#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
++#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
++#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
++#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
++#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
++#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
++#define isl_multi_val_set_val (*isl_pointers__.p_isl_multi_val_set_val)
++#define isl_multi_val_zero (*isl_pointers__.p_isl_multi_val_zero)
++#define isl_options_set_schedule_max_coefficient
(*isl_pointers__.p_isl_options_set_schedule_max_coefficient)
++#define isl_options_set_tile_scale_tile_loops
(*isl_pointers__.p_isl_options_set_tile_scale_tile_loops)
++#define isl_schedule_copy (*isl_pointers__.p_isl_schedule_copy)
++#define isl_schedule_get_map (*isl_pointers__.p_isl_schedule_get_map)
++#define isl_schedule_map_schedule_node_bottom_up
(*isl_pointers__.p_isl_schedule_map_schedule_node_bottom_up)
++#define isl_schedule_node_band_get_permutable
(*isl_pointers__.p_isl_schedule_node_band_get_permutable)
++#define isl_schedule_node_band_get_space
(*isl_pointers__.p_isl_schedule_node_band_get_space)
++#define isl_schedule_node_band_tile (*isl_pointers__.p_isl_schedule_node_band_tile)
++#define isl_schedule_node_child (*isl_pointers__.p_isl_schedule_node_child)
++#define isl_schedule_node_free (*isl_pointers__.p_isl_schedule_node_free)
++#define isl_schedule_node_get_child (*isl_pointers__.p_isl_schedule_node_get_child)
++#define isl_schedule_node_get_ctx (*isl_pointers__.p_isl_schedule_node_get_ctx)
++#define isl_schedule_node_get_type (*isl_pointers__.p_isl_schedule_node_get_type)
++#define isl_schedule_node_n_children (*isl_pointers__.p_isl_schedule_node_n_children)
++#define isl_union_map_is_equal (*isl_pointers__.p_isl_union_map_is_equal)
++#define isl_union_access_info_compute_flow
(*isl_pointers__.p_isl_union_access_info_compute_flow)
++#define isl_union_access_info_from_sink
(*isl_pointers__.p_isl_union_access_info_from_sink)
++#define isl_union_access_info_set_may_source
(*isl_pointers__.p_isl_union_access_info_set_may_source)
++#define isl_union_access_info_set_must_source
(*isl_pointers__.p_isl_union_access_info_set_must_source)
++#define isl_union_access_info_set_schedule
(*isl_pointers__.p_isl_union_access_info_set_schedule)
++#define isl_union_flow_free (*isl_pointers__.p_isl_union_flow_free)
++#define isl_union_flow_get_may_dependence
(*isl_pointers__.p_isl_union_flow_get_may_dependence)
++#define isl_union_flow_get_must_dependence
(*isl_pointers__.p_isl_union_flow_get_must_dependence)
++#define isl_aff_var_on_domain (*isl_pointers__.p_isl_aff_var_on_domain)
++#define isl_multi_aff_from_aff (*isl_pointers__.p_isl_multi_aff_from_aff)
++#define isl_schedule_get_ctx (*isl_pointers__.p_isl_schedule_get_ctx)
++#define isl_multi_aff_set_tuple_id (*isl_pointers__.p_isl_multi_aff_set_tuple_id)
++#define isl_multi_aff_dim (*isl_pointers__.p_isl_multi_aff_dim)
++#define isl_schedule_get_domain (*isl_pointers__.p_isl_schedule_get_domain)
++#define isl_union_set_is_empty (*isl_pointers__.p_isl_union_set_is_empty)
++#define isl_union_set_get_space (*isl_pointers__.p_isl_union_set_get_space)
++#define isl_union_pw_multi_aff_empty (*isl_pointers__.p_isl_union_pw_multi_aff_empty)
++#define isl_union_set_foreach_set (*isl_pointers__.p_isl_union_set_foreach_set)
++#define isl_union_set_free (*isl_pointers__.p_isl_union_set_free)
++#define isl_multi_union_pw_aff_from_union_pw_multi_aff
(*isl_pointers__.p_isl_multi_union_pw_aff_from_union_pw_multi_aff)
++#define isl_multi_union_pw_aff_apply_multi_aff
(*isl_pointers__.p_isl_multi_union_pw_aff_apply_multi_aff)
++#define isl_schedule_insert_partial_schedule
(*isl_pointers__.p_isl_schedule_insert_partial_schedule)
++#define isl_union_pw_multi_aff_free (*isl_pointers__.p_isl_union_pw_multi_aff_free)
++#define isl_pw_multi_aff_project_out_map
(*isl_pointers__.p_isl_pw_multi_aff_project_out_map)
++#define isl_union_pw_multi_aff_add_pw_multi_aff
(*isl_pointers__.p_isl_union_pw_multi_aff_add_pw_multi_aff)
++#define isl_schedule_from_domain (*isl_pointers__.p_isl_schedule_from_domain)
++#define isl_schedule_sequence (*isl_pointers__.p_isl_schedule_sequence)
++#define isl_ast_build_node_from_schedule
(*isl_pointers__.p_isl_ast_build_node_from_schedule)
++#define isl_ast_node_mark_get_node (*isl_pointers__.p_isl_ast_node_mark_get_node)
++#define isl_schedule_node_band_member_get_ast_loop_type
(*isl_pointers__.p_isl_schedule_node_band_member_get_ast_loop_type)
++#define isl_schedule_node_band_member_set_ast_loop_type
(*isl_pointers__.p_isl_schedule_node_band_member_set_ast_loop_type)
++#define isl_val_n_abs_num_chunks (*isl_pointers__.p_isl_val_n_abs_num_chunks)
++#define isl_val_get_abs_num_chunks (*isl_pointers__.p_isl_val_get_abs_num_chunks)
++#define isl_val_int_from_chunks (*isl_pointers__.p_isl_val_int_from_chunks)
++#define isl_val_is_neg (*isl_pointers__.p_isl_val_is_neg)
++#define isl_version (*isl_pointers__.p_isl_version)
++#define isl_options_get_on_error (*isl_pointers__.p_isl_options_get_on_error)
++#define isl_ctx_reset_error (*isl_pointers__.p_isl_ctx_reset_error)
+
+ typedef struct poly_dr *poly_dr_p;
+
+@@ -461,5 +1045,6 @@ extern void build_scops (vec<scop_p> *);
+ extern void dot_all_sese (FILE *, vec<sese_l> &);
+ extern void dot_sese (sese_l &);
+ extern void dot_cfg ();
++extern const char *get_isl_version (bool);
+
+ #endif
+--- gcc/graphite.c.jj 2015-11-04 14:15:32.000000000 +0100
++++ gcc/graphite.c 2015-11-04 14:56:02.645536409 +0100
+@@ -60,6 +60,35 @@ along with GCC; see the file COPYING3.
+ #include "tree-into-ssa.h"
+ #include "graphite.h"
+
++__typeof (isl_pointers__) isl_pointers__;
++
++static bool
++init_isl_pointers (void)
++{
++ void *h;
++
++ if (isl_pointers__.inited)
++ return isl_pointers__.h != NULL;
++ h = dlopen ("libisl.so.15", RTLD_LAZY);
++ isl_pointers__.h = h;
++ if (h == NULL)
++ return false;
++#define DYNSYM(x) \
++ do \
++ { \
++ union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
++ u.q = dlsym (h, #x); \
++ if (u.q == NULL) \
++ return false; \
++ isl_pointers__.p_##x = u.p; \
++ } \
++ while (0)
++ DYNSYMS
++#undef DYNSYM
++ isl_pointers__.inited = true;
++ return true;
++}
++
+ /* Print global statistics to FILE. */
+
+ static void
+@@ -365,6 +394,15 @@ graphite_transform_loops (void)
+ if (parallelized_function_p (cfun->decl))
+ return;
+
++ if (number_of_loops (cfun) <= 1)
++ return;
++
++ if (!init_isl_pointers ())
++ {
++ sorry ("Graphite loop optimizations cannot be used");
++ return;
++ }
++
+ calculate_dominance_info (CDI_DOMINATORS);
+
+ /* We rely on post-dominators during merging of SESE regions so those
+@@ -455,6 +493,14 @@ graphite_transform_loops (void)
+ }
+ }
+
++const char *
++get_isl_version (bool force)
++{
++ if (force)
++ init_isl_pointers ();
++ return (isl_pointers__.inited && isl_version) ? isl_version () :
"none";
++}
++
+ #else /* If isl is not available: #ifndef HAVE_isl. */
+
+ static void
+--- gcc/toplev.c.jj 2017-02-19 13:02:31.000000000 +0100
++++ gcc/toplev.c 2017-02-19 16:50:25.536301350 +0100
+@@ -94,6 +94,7 @@ along with GCC; see the file COPYING3.
+
+ #ifdef HAVE_isl
+ #include <isl/version.h>
++extern const char *get_isl_version (bool);
+ #endif
+
+ static void general_init (const char *, bool);
+@@ -683,7 +684,7 @@ print_version (FILE *file, const char *i
+ #ifndef HAVE_isl
+ "none"
+ #else
+- isl_version ()
++ get_isl_version (*indent == 0)
+ #endif
+ );
+ if (strcmp (GCC_GMP_STRINGIFY_VERSION, gmp_version))
diff --git a/gcc8-libgomp-omp_h-multilib.patch b/gcc8-libgomp-omp_h-multilib.patch
new file mode 100644
index 0000000..d0e98d1
--- /dev/null
+++ b/gcc8-libgomp-omp_h-multilib.patch
@@ -0,0 +1,17 @@
+2008-06-09 Jakub Jelinek <jakub(a)redhat.com>
+
+ * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
+
+--- libgomp/omp.h.in.jj 2008-06-09 13:34:05.000000000 +0200
++++ libgomp/omp.h.in 2008-06-09 13:34:48.000000000 +0200
+@@ -42,8 +42,8 @@ typedef struct
+
+ typedef struct
+ {
+- unsigned char _x[@OMP_NEST_LOCK_SIZE@]
+- __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
++ unsigned char _x[8 + sizeof (void *)]
++ __attribute__((__aligned__(sizeof (void *))));
+ } omp_nest_lock_t;
+ #endif
+
diff --git a/gcc8-libtool-no-rpath.patch b/gcc8-libtool-no-rpath.patch
new file mode 100644
index 0000000..466c661
--- /dev/null
+++ b/gcc8-libtool-no-rpath.patch
@@ -0,0 +1,27 @@
+libtool sucks.
+--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100
++++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200
+@@ -5394,6 +5394,7 @@ EOF
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+@@ -6071,6 +6072,7 @@ EOF
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+@@ -6120,6 +6122,7 @@ EOF
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64)
continue;; esac
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
diff --git a/gcc8-mcet.patch b/gcc8-mcet.patch
new file mode 100644
index 0000000..6fb78ca
--- /dev/null
+++ b/gcc8-mcet.patch
@@ -0,0 +1,17 @@
+2018-04-24 Jakub Jelinek <jakub(a)redhat.com>
+
+ * config/i386/i386.opt (mcet): Remporarily re-add as alias to -mshstk.
+
+--- gcc/config/i386/i386.opt (revision 259613)
++++ gcc/config/i386/i386.opt (revision 259612)
+@@ -1006,6 +1006,10 @@ mgeneral-regs-only
+ Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
+ Generate code which uses only the general registers.
+
++mcet
++Target Undocumented Alias(mshstk)
++;; Deprecated
++
+ mshstk
+ Target Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
+ Enable shadow stack built-in functions from Control-flow Enforcement
diff --git a/gcc8-no-add-needed.patch b/gcc8-no-add-needed.patch
new file mode 100644
index 0000000..aa2f52d
--- /dev/null
+++ b/gcc8-no-add-needed.patch
@@ -0,0 +1,50 @@
+2010-02-08 Roland McGrath <roland(a)redhat.com>
+
+ * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
+ linker.
+ * config/gnu-user.h (LINK_EH_SPEC): Likewise.
+ * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+ * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
++++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
+@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu
+ I imagine that other systems will catch up. In the meantime, it
+ doesn't harm to make sure that the data exists to be used later. */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
++++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
+@@ -76,7 +76,7 @@ do { \
+ Signalize that because we have fde-glibc, we don't need all C shared libs
+ linked against -lgcc_s. */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+
+ #undef TARGET_INIT_LIBFUNCS
+ #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
+--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
++++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
+@@ -133,7 +133,7 @@ see the files COPYING3 and COPYING.RUNTI
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+
+ #undef LINK_GCC_C_SEQUENCE_SPEC
+--- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100
++++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100
+@@ -816,7 +816,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
+ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-# define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
++# define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} "
+ #endif
+
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
diff --git a/gcc8-rh1512529-aarch64.patch b/gcc8-rh1512529-aarch64.patch
new file mode 100644
index 0000000..4030027
--- /dev/null
+++ b/gcc8-rh1512529-aarch64.patch
@@ -0,0 +1,445 @@
+--- gcc/config/aarch64/aarch64.c
++++ gcc/config/aarch64/aarch64.c
+@@ -3799,7 +3799,14 @@ aarch64_output_probe_stack_range (rtx reg1, rtx reg2)
+ output_asm_insn ("sub\t%0, %0, %1", xops);
+
+ /* Probe at TEST_ADDR. */
+- output_asm_insn ("str\txzr, [%0]", xops);
++ if (flag_stack_clash_protection)
++ {
++ gcc_assert (xops[0] == stack_pointer_rtx);
++ xops[1] = GEN_INT (PROBE_INTERVAL - 8);
++ output_asm_insn ("str\txzr, [%0, %1]", xops);
++ }
++ else
++ output_asm_insn ("str\txzr, [%0]", xops);
+
+ /* Test if TEST_ADDR == LAST_ADDR. */
+ xops[1] = reg2;
+@@ -4589,6 +4596,133 @@ aarch64_set_handled_components (sbitmap components)
+ cfun->machine->reg_is_wrapped_separately[regno] = true;
+ }
+
++/* Allocate POLY_SIZE bytes of stack space using TEMP1 and TEMP2 as scratch
++ registers. */
++
++static void
++aarch64_allocate_and_probe_stack_space (rtx temp1, rtx temp2,
++ poly_int64 poly_size)
++{
++ HOST_WIDE_INT size;
++ if (!poly_size.is_constant (&size))
++ {
++ sorry ("stack probes for SVE frames");
++ return;
++ }
++
++ HOST_WIDE_INT probe_interval
++ = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL);
++ HOST_WIDE_INT guard_size
++ = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE);
++ HOST_WIDE_INT guard_used_by_caller = 1024;
++
++ /* SIZE should be large enough to require probing here. ie, it
++ must be larger than GUARD_SIZE - GUARD_USED_BY_CALLER.
++
++ We can allocate GUARD_SIZE - GUARD_USED_BY_CALLER as a single chunk
++ without any probing. */
++ gcc_assert (size >= guard_size - guard_used_by_caller);
++ aarch64_sub_sp (temp1, temp2, guard_size - guard_used_by_caller, true);
++ HOST_WIDE_INT orig_size = size;
++ size -= (guard_size - guard_used_by_caller);
++
++ HOST_WIDE_INT rounded_size = size & -probe_interval;
++ HOST_WIDE_INT residual = size - rounded_size;
++
++ /* We can handle a small number of allocations/probes inline. Otherwise
++ punt to a loop. */
++ if (rounded_size && rounded_size <= 4 * probe_interval)
++ {
++ /* We don't use aarch64_sub_sp here because we don't want to
++ repeatedly load TEMP1. */
++ rtx step = GEN_INT (-probe_interval);
++ if (probe_interval > ARITH_FACTOR)
++ {
++ emit_move_insn (temp1, step);
++ step = temp1;
++ }
++
++ for (HOST_WIDE_INT i = 0; i < rounded_size; i += probe_interval)
++ {
++ rtx_insn *insn = emit_insn (gen_add2_insn (stack_pointer_rtx, step));
++ add_reg_note (insn, REG_STACK_CHECK, const0_rtx);
++
++ if (probe_interval > ARITH_FACTOR)
++ {
++ RTX_FRAME_RELATED_P (insn) = 1;
++ rtx adj = plus_constant (Pmode, stack_pointer_rtx, -probe_interval);
++ add_reg_note (insn, REG_CFA_ADJUST_CFA,
++ gen_rtx_SET (stack_pointer_rtx, adj));
++ }
++
++ emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
++ (probe_interval
++ - GET_MODE_SIZE (word_mode))));
++ emit_insn (gen_blockage ());
++ }
++ dump_stack_clash_frame_info (PROBE_INLINE, size != rounded_size);
++ }
++ else if (rounded_size)
++ {
++ /* Compute the ending address. */
++ unsigned int scratchreg = REGNO (temp1);
++ emit_move_insn (temp1, GEN_INT (-rounded_size));
++ rtx_insn *insn
++ = emit_insn (gen_add3_insn (temp1, stack_pointer_rtx, temp1));
++
++ /* For the initial allocation, we don't have a frame pointer
++ set up, so we always need CFI notes. If we're doing the
++ final allocation, then we may have a frame pointer, in which
++ case it is the CFA, otherwise we need CFI notes.
++
++ We can determine which allocation we are doing by looking at
++ the temporary register. IP0 is the initial allocation, IP1
++ is the final allocation. */
++ if (scratchreg == IP0_REGNUM || !frame_pointer_needed)
++ {
++ /* We want the CFA independent of the stack pointer for the
++ duration of the loop. */
++ add_reg_note (insn, REG_CFA_DEF_CFA,
++ plus_constant (Pmode, temp1,
++ (rounded_size + (orig_size - size))));
++ RTX_FRAME_RELATED_P (insn) = 1;
++ }
++
++ /* This allocates and probes the stack.
++
++ It also probes at a 4k interval regardless of the value of
++ PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL. */
++ insn = emit_insn (gen_probe_stack_range (stack_pointer_rtx,
++ stack_pointer_rtx, temp1));
++
++ /* Now reset the CFA register if needed. */
++ if (scratchreg == IP0_REGNUM || !frame_pointer_needed)
++ {
++ add_reg_note (insn, REG_CFA_DEF_CFA,
++ plus_constant (Pmode, stack_pointer_rtx,
++ (rounded_size + (orig_size - size))));
++ RTX_FRAME_RELATED_P (insn) = 1;
++ }
++
++ emit_insn (gen_blockage ());
++ dump_stack_clash_frame_info (PROBE_LOOP, size != rounded_size);
++ }
++ else
++ dump_stack_clash_frame_info (PROBE_INLINE, size != rounded_size);
++
++ /* Handle any residuals.
++ Note that any residual must be probed. */
++ if (residual)
++ {
++ aarch64_sub_sp (temp1, temp2, residual, true);
++ add_reg_note (get_last_insn (), REG_STACK_CHECK, const0_rtx);
++ emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
++ (residual - GET_MODE_SIZE (word_mode))));
++ emit_insn (gen_blockage ());
++ }
++ return;
++}
++
+ /* Add a REG_CFA_EXPRESSION note to INSN to say that register REG
+ is saved at BASE + OFFSET. */
+
+@@ -4686,7 +4820,54 @@ aarch64_expand_prologue (void)
+ rtx ip0_rtx = gen_rtx_REG (Pmode, IP0_REGNUM);
+ rtx ip1_rtx = gen_rtx_REG (Pmode, IP1_REGNUM);
+
+- aarch64_sub_sp (ip0_rtx, ip1_rtx, initial_adjust, true);
++ /* We do not fully protect aarch64 against stack clash style attacks
++ as doing so would be prohibitively expensive with less utility over
++ time as newer compilers are deployed.
++
++ We assume the guard is at least 64k. Furthermore, we assume that
++ the caller has not pushed the stack pointer more than 1k into
++ the guard. A caller that pushes the stack pointer than 1k into
++ the guard is considered invalid.
++
++ Note that the caller's ability to push the stack pointer into the
++ guard is a function of the number and size of outgoing arguments and/or
++ dynamic stack allocations due to the mandatory save of the link register
++ in the caller's frame.
++
++ With those assumptions the callee can allocate up to 63k of stack
++ space without probing.
++
++ When probing is needed, we emit a probe at the start of the prologue
++ and every PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL bytes thereafter.
++
++ We have to track how much space has been allocated, but we do not
++ track stores into the stack as implicit probes except for the
++ fp/lr store. */
++ HOST_WIDE_INT guard_size
++ = 1 << PARAM_VALUE (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE);
++ HOST_WIDE_INT guard_used_by_caller = 1024;
++ if (flag_stack_clash_protection)
++ {
++ if (known_eq (frame_size, 0))
++ dump_stack_clash_frame_info (NO_PROBE_NO_FRAME, false);
++ else if (known_lt (initial_adjust, guard_size - guard_used_by_caller)
++ && known_lt (final_adjust, guard_size - guard_used_by_caller))
++ dump_stack_clash_frame_info (NO_PROBE_SMALL_FRAME, true);
++ }
++
++ /* In theory we should never have both an initial adjustment
++ and a callee save adjustment. Verify that is the case since the
++ code below does not handle it for -fstack-clash-protection. */
++ gcc_assert (known_eq (initial_adjust, 0) || callee_adjust == 0);
++
++ /* Only probe if the initial adjustment is larger than the guard
++ less the amount of the guard reserved for use by the caller's
++ outgoing args. */
++ if (flag_stack_clash_protection
++ && maybe_ge (initial_adjust, guard_size - guard_used_by_caller))
++ aarch64_allocate_and_probe_stack_space (ip0_rtx, ip1_rtx, initial_adjust);
++ else
++ aarch64_sub_sp (ip0_rtx, ip1_rtx, initial_adjust, true);
+
+ if (callee_adjust != 0)
+ aarch64_push_regs (reg1, reg2, callee_adjust);
+@@ -4742,7 +4923,31 @@ aarch64_expand_prologue (void)
+ callee_adjust != 0 || emit_frame_chain);
+ aarch64_save_callee_saves (DFmode, callee_offset, V0_REGNUM, V31_REGNUM,
+ callee_adjust != 0 || emit_frame_chain);
+- aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
++
++ /* We may need to probe the final adjustment as well. */
++ if (flag_stack_clash_protection && maybe_ne (final_adjust, 0))
++ {
++ /* First probe if the final adjustment is larger than the guard size
++ less the amount of the guard reserved for use by the caller's
++ outgoing args. */
++ if (maybe_ge (final_adjust, guard_size - guard_used_by_caller))
++ aarch64_allocate_and_probe_stack_space (ip1_rtx, ip0_rtx,
++ final_adjust);
++ else
++ aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
++
++ /* We must also probe if the final adjustment is larger than the guard
++ that is assumed used by the caller. This may be sub-optimal. */
++ if (maybe_ge (final_adjust, guard_used_by_caller))
++ {
++ if (dump_file)
++ fprintf (dump_file,
++ "Stack clash aarch64 large outgoing arg, probing\n");
++ emit_stack_probe (stack_pointer_rtx);
++ }
++ }
++ else
++ aarch64_sub_sp (ip1_rtx, ip0_rtx, final_adjust, !frame_pointer_needed);
+ }
+
+ /* Return TRUE if we can use a simple_return insn.
+@@ -10476,6 +10681,12 @@ aarch64_override_options_internal (struct gcc_options *opts)
+ && opts->x_optimize >=
aarch64_tune_params.prefetch->default_opt_level)
+ opts->x_flag_prefetch_loop_arrays = 1;
+
++ /* We assume the guard page is 64k. */
++ maybe_set_param_value (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE,
++ 16,
++ opts->x_param_values,
++ global_options_set.x_param_values);
++
+ aarch64_override_options_after_change_1 (opts);
+ }
+
+@@ -17161,6 +17372,28 @@ aarch64_sched_can_speculate_insn (rtx_insn *insn)
+ }
+ }
+
++/* It has been decided that to allow up to 1kb of outgoing argument
++ space to be allocated w/o probing. If more than 1kb of outgoing
++ argment space is allocated, then it must be probed and the last
++ probe must occur no more than 1kbyte away from the end of the
++ allocated space.
++
++ This implies that the residual part of an alloca allocation may
++ need probing in cases where the generic code might not otherwise
++ think a probe is needed.
++
++ This target hook returns TRUE when allocating RESIDUAL bytes of
++ alloca space requires an additional probe, otherwise FALSE is
++ returned. */
++
++static bool
++aarch64_stack_clash_protection_final_dynamic_probe (rtx residual)
++{
++ return (residual == CONST0_RTX (Pmode)
++ || GET_CODE (residual) != CONST_INT
++ || INTVAL (residual) >= 1024);
++}
++
+ /* Implement TARGET_COMPUTE_PRESSURE_CLASSES. */
+
+ static int
+@@ -17669,6 +17902,10 @@ aarch64_libgcc_floating_mode_supported_p
+ #undef TARGET_CONSTANT_ALIGNMENT
+ #define TARGET_CONSTANT_ALIGNMENT aarch64_constant_alignment
+
++#undef TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE
++#define TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE \
++ aarch64_stack_clash_protection_final_dynamic_probe
++
+ #undef TARGET_COMPUTE_PRESSURE_CLASSES
+ #define TARGET_COMPUTE_PRESSURE_CLASSES aarch64_compute_pressure_classes
+
+--- gcc/config/aarch64/aarch64.md
++++ gcc/config/aarch64/aarch64.md
+@@ -5812,7 +5812,7 @@
+ )
+
+ (define_insn "probe_stack_range"
+- [(set (match_operand:DI 0 "register_operand" "=r")
++ [(set (match_operand:DI 0 "register_operand" "=rk")
+ (unspec_volatile:DI [(match_operand:DI 1 "register_operand" "0")
+ (match_operand:DI 2 "register_operand" "r")]
+ UNSPECV_PROBE_STACK_RANGE))]
+--- gcc/testsuite/gcc.target/aarch64/stack-check-12.c
++++ gcc/testsuite/gcc.target/aarch64/stack-check-12.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-clash-protection --param
stack-clash-protection-guard-size=12" } */
++/* { dg-require-effective-target supports_stack_clash_protection } */
++
++extern void arf (unsigned long int *, unsigned long int *);
++void
++frob ()
++{
++ unsigned long int num[1000];
++ unsigned long int den[1000];
++ arf (den, num);
++}
++
++/* This verifies that the scheduler did not break the dependencies
++ by adjusting the offsets within the probe and that the scheduler
++ did not reorder around the stack probes. */
++/* { dg-final { scan-assembler-times "sub\\tsp, sp, #4096\\n\\tstr\\txzr, .sp,
4088." 3 } } */
++
++
++
+--- gcc/testsuite/gcc.target/aarch64/stack-check-13.c
++++ gcc/testsuite/gcc.target/aarch64/stack-check-13.c
+@@ -0,0 +1,28 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-clash-protection --param
stack-clash-protection-guard-size=12" } */
++/* { dg-require-effective-target supports_stack_clash_protection } */
++
++#define ARG32(X) X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
++#define ARG192(X) ARG32(X),ARG32(X),ARG32(X),ARG32(X),ARG32(X),ARG32(X)
++void out1(ARG192(__int128));
++int t1(int);
++
++int t3(int x)
++{
++ if (x < 1000)
++ return t1 (x) + 1;
++
++ out1 (ARG192(1));
++ return 0;
++}
++
++
++
++/* This test creates a large (> 1k) outgoing argument area that needs
++ to be probed. We don't test the exact size of the space or the
++ exact offset to make the test a little less sensitive to trivial
++ output changes. */
++/* { dg-final { scan-assembler-times "sub\\tsp, sp, #....\\n\\tstr\\txzr,
\\\[sp" 1 } } */
++
++
++
+--- gcc/testsuite/gcc.target/aarch64/stack-check-14.c
++++ gcc/testsuite/gcc.target/aarch64/stack-check-14.c
+@@ -0,0 +1,25 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-clash-protection --param
stack-clash-protection-guard-size=12" } */
++/* { dg-require-effective-target supports_stack_clash_protection } */
++
++int t1(int);
++
++int t2(int x)
++{
++ char *p = __builtin_alloca (4050);
++ x = t1 (x);
++ return p[x];
++}
++
++
++/* This test has a constant sized alloca that is smaller than the
++ probe interval. But it actually requires two probes instead
++ of one because of the optimistic assumptions we made in the
++ aarch64 prologue code WRT probing state.
++
++ The form can change quite a bit so we just check for two
++ probes without looking at the actual address. */
++/* { dg-final { scan-assembler-times "str\\txzr," 2 } } */
++
++
++
+--- gcc/testsuite/gcc.target/aarch64/stack-check-15.c
++++ gcc/testsuite/gcc.target/aarch64/stack-check-15.c
+@@ -0,0 +1,24 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-clash-protection --param
stack-clash-protection-guard-size=12" } */
++/* { dg-require-effective-target supports_stack_clash_protection } */
++
++int t1(int);
++
++int t2(int x)
++{
++ char *p = __builtin_alloca (x);
++ x = t1 (x);
++ return p[x];
++}
++
++
++/* This test has a variable sized alloca. It requires 3 probes.
++ One in the loop, one for the residual and at the end of the
++ alloca area.
++
++ The form can change quite a bit so we just check for two
++ probes without looking at the actual address. */
++/* { dg-final { scan-assembler-times "str\\txzr," 3 } } */
++
++
++
+--- gcc/testsuite/lib/target-supports.exp
++++ gcc/testsuite/lib/target-supports.exp
+@@ -9201,14 +9201,9 @@ proc check_effective_target_autoincdec { } {
+ #
+ proc check_effective_target_supports_stack_clash_protection { } {
+
+- # Temporary until the target bits are fully ACK'd.
+-# if { [istarget aarch*-*-*] } {
+-# return 1
+-# }
+-
+ if { [istarget x86_64-*-*] || [istarget i?86-*-*]
+ || [istarget powerpc*-*-*] || [istarget rs6000*-*-*]
+- || [istarget s390*-*-*] } {
++ || [istarget aarch64*-**] || [istarget s390*-*-*] } {
+ return 1
+ }
+ return 0
+@@ -9217,9 +9212,9 @@ proc check_effective_target_supports_stack_clash_protection { } {
+ # Return 1 if the target creates a frame pointer for non-leaf functions
+ # Note we ignore cases where we apply tail call optimization here.
+ proc check_effective_target_frame_pointer_for_non_leaf { } {
+- if { [istarget aarch*-*-*] } {
+- return 1
+- }
++# if { [istarget aarch*-*-*] } {
++# return 1
++# }
+
+ # Solaris/x86 defaults to -fno-omit-frame-pointer.
+ if { [istarget i?86-*-solaris*] || [istarget x86_64-*-solaris*] } {
diff --git a/gcc8-rh1574936.patch b/gcc8-rh1574936.patch
new file mode 100644
index 0000000..32db990
--- /dev/null
+++ b/gcc8-rh1574936.patch
@@ -0,0 +1,31 @@
+crt files and statically linked libgcc objects cause false positives
+in annobin coverage, so we add the assembler flag to generate notes
+for them.
+
+The patch also adds notes to libgcc_s.so, but this is harmless because
+these notes only confer that there is no other annobin markup.
+
+2018-07-25 Florian Weimer <fweimer(a)redhat.com>
+
+ * Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add
+ -Wa,--generate-missing-build-notes=yes.
+
+--- libgcc/Makefile.in 2018-01-13 13:05:41.000000000 +0100
++++ libgcc/Makefile.in 2018-07-25 13:15:02.036226940 +0200
+@@ -244,6 +244,7 @@
+ LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \
+ $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \
+ -fbuilding-libgcc -fno-stack-protector \
++ -Wa,--generate-missing-build-notes=yes \
+ $(INHIBIT_LIBC_CFLAGS)
+
+ # Additional options to use when compiling libgcc2.a.
+@@ -297,6 +298,7 @@
+ $(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
+ -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
+ -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
++ -Wa,--generate-missing-build-notes=yes \
+ $(INHIBIT_LIBC_CFLAGS)
+
+ # Extra flags to use when compiling crt{begin,end}.o.
+
diff --git a/gcc8-sparc-config-detection.patch b/gcc8-sparc-config-detection.patch
new file mode 100644
index 0000000..bb06b35
--- /dev/null
+++ b/gcc8-sparc-config-detection.patch
@@ -0,0 +1,40 @@
+--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
++++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
+@@ -2790,7 +2790,7 @@ sparc-*-rtems*)
+ tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h
rtems.h newlib-stdint.h"
+ tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
+ ;;
+-sparc-*-linux*)
++sparc-*-linux* | sparcv9-*-linux*)
+ tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h
glibc-stdint.h sparc/tso.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+ case ${target} in
+@@ -2844,7 +2844,7 @@ sparc64-*-rtems*)
+ extra_options="${extra_options}"
+ tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
+ ;;
+-sparc64-*-linux*)
++sparc64*-*-linux*)
+ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h
linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+ tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
+--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
++++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
+@@ -1002,7 +1002,7 @@ sparc-*-elf*)
+ tmake_file="${tmake_file} t-fdpbit t-crtfm"
+ extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
+ ;;
+-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
++sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6
+ tmake_file="${tmake_file} t-crtfm"
+ if test "${host_address}" = 64; then
+ tmake_file="$tmake_file sparc/t-linux64"
+@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
+ tmake_file="$tmake_file t-crtfm"
+ extra_parts="$extra_parts crtfastmath.o"
+ ;;
+-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
++sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
+ extra_parts="$extra_parts crtfastmath.o"
+ tmake_file="${tmake_file} t-crtfm sparc/t-linux"
+ if test "${host_address}" = 64; then
diff --git a/ghdl.spec b/ghdl.spec
index d2e0573..8f6fb96 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -1,6 +1,3 @@
-%global DATE 20170118
-%global SVNREV 244565
-%global gcc_version 6.3.1
%global ghdlver 0.35dev
%global ghdlgitrev .20190129git3c30e3b
@@ -26,42 +23,140 @@
%bcond_with gnatwae
+%global DATE 20190109
+%global SVNREV 267776
+%global gcc_version 8.2.1
+%global gcc_major 8
+# Note, gcc_release must be integer, if you want to add suffixes to
+# %%{release}, append them after %%{gcc_release} on Release: line.
+%global gcc_release 7
+%global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f
+%global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24
+%global _unpackaged_files_terminate_build 0
+%global _performance_build 1
+# Hardening slows the compiler way too much.
+%undefine _hardened_build
+%if 0%{?fedora} > 27 || 0%{?rhel} > 7
+# Until annobin is fixed (#1519165).
+%undefine _annotated_build
+%endif
+%global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
+%ifarch %{ix86} x86_64 ia64 ppc64le
+%global build_libquadmath 1
+%else
+%global build_libquadmath 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
+%global build_libasan 1
+%else
+%global build_libasan 0
+%endif
+%ifarch x86_64 ppc64 ppc64le aarch64
+%global build_libtsan 1
+%else
+%global build_libtsan 0
+%endif
+%ifarch x86_64 ppc64 ppc64le aarch64
+%global build_liblsan 1
+%else
+%global build_liblsan 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
+%global build_libubsan 1
+%else
+%global build_libubsan 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
+%global build_libatomic 1
+%else
+%global build_libatomic 0
+%endif
+%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64
+%global build_libitm 1
+%else
+%global build_libitm 0
+%endif
+%if 0%{?rhel} > 7
+%global build_libmpx 0
+%else
+%ifarch %{ix86} x86_64
+%global build_libmpx 1
+%else
+%global build_libmpx 0
+%endif
+%endif
+%global build_isl 1
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
+%global attr_ifunc 1
+%else
+%global attr_ifunc 0
+%endif
+%ifarch x86_64 ppc64le
+%global build_offload_nvptx 1
+%else
+%global build_offload_nvptx 0
+%endif
+%ifarch s390x
+%global multilib_32_arch s390
+%endif
+%ifarch sparc64
+%global multilib_32_arch sparcv9
+%endif
+%ifarch ppc64 ppc64p7
+%global multilib_32_arch ppc
+%endif
+%ifarch x86_64
+%global multilib_32_arch i686
+%endif
+
Summary: A VHDL simulator, using the GCC technology
Name: ghdl
Version: %{ghdlver}
Release: 1%{ghdlgitrev}.0%{?dist}
-License: GPLv2+
+License: GPLv2+ and GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
LGPLv2+ and BSD
URL:
http://ghdl.free.fr/
+# The source for this package was pulled from upstream's vcs. Use the
+# following commands to generate the tarball:
+# svn export
svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-8-branch@%%{SVNREV}
gcc-%%{version}-%%{DATE}
+# tar cf - gcc-%%{version}-%%{DATE} | xz -9e > gcc-%%{version}-%%{DATE}.tar.xz
+Source0: gcc-%{gcc_version}-%{DATE}.tar.xz
+# The source for nvptx-tools package was pulled from upstream's vcs. Use the
+# following commands to generate the tarball:
+# git clone
https://github.com/MentorEmbedded/nvptx-tools.git
+# cd nvptx-tools
+# git archive origin/master --prefix=nvptx-tools-%%{nvptx_tools_gitrev}/ | xz -9e >
../nvptx-tools-%%{nvptx_tools_gitrev}.tar.xz
+# cd ..; rm -rf nvptx-tools
+Source1: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz
+# The source for nvptx-newlib package was pulled from upstream's vcs. Use the
+# following commands to generate the tarball:
+# git clone
https://github.com/MentorEmbedded/nvptx-newlib.git
+# cd nvptx-newlib
+# git archive origin/master --prefix=nvptx-newlib-%%{nvptx_newlib_gitrev}/ | xz -9 >
../nvptx-newlib-%%{nvptx_newlib_gitrev}.tar.xz
+# cd ..; rm -rf nvptx-newlib
+Source2: nvptx-newlib-%{nvptx_newlib_gitrev}.tar.xz
+%global isl_version 0.16.1
+
+Patch0: gcc8-hack.patch
+Patch2: gcc8-i386-libgomp.patch
+Patch3: gcc8-sparc-config-detection.patch
+Patch4: gcc8-libgomp-omp_h-multilib.patch
+Patch5: gcc8-libtool-no-rpath.patch
+Patch6: gcc8-isl-dl.patch
+Patch8: gcc8-no-add-needed.patch
+Patch9: gcc8-foffload-default.patch
+Patch10: gcc8-Wno-format-security.patch
+Patch11: gcc8-rh1512529-aarch64.patch
+Patch12: gcc8-mcet.patch
+Patch13: gcc8-rh1574936.patch
+
+Patch1000: nvptx-tools-no-ptxas.patch
+Patch1001: nvptx-tools-build.patch
+Patch1002: nvptx-tools-glibc.patch
+
# HOWTO create source files from ghdl git at
github.com
# check out the git repo
# git clone
https://github.com/tgingold/ghdl.git
# tar cvJf ghdl%{ghdlgitrev}.tar.bz2 --exclude-vcs ghdl
-#
-# The source for this package was pulled from upstream's vcs. Use the
-# following commands to generate the tarball:
-# svn export
svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_7-branch@%{SVNREV}
gcc-%{version}-%{DATE}
-# tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
-Source0: gcc-%{gcc_version}-%{DATE}.tar.bz2
-%global isl_version 0.14
-Source1:
ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.xz
-%global cloog_version 0.18.3
-Source2:
ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-%{cloog_version}.tar.gz
-Patch0: gcc6-hack.patch
-Patch1: gcc6-java-nomulti.patch
-Patch2: gcc6-ppc32-retaddr.patch
-Patch3: gcc6-rh330771.patch
-Patch4: gcc6-i386-libgomp.patch
-Patch5: gcc6-sparc-config-detection.patch
-Patch6: gcc6-libgomp-omp_h-multilib.patch
-Patch7: gcc6-libtool-no-rpath.patch
-Patch8: gcc6-isl-dl.patch
-Patch9: gcc6-libstdc++-docs.patch
-Patch10: gcc6-no-add-needed.patch
-Patch11: gcc6-libgo-p224.patch
-Patch12: gcc6-aarch64-async-unw-tables.patch
-Patch13: gcc6-libsanitize-aarch64-va42.patch
-Patch90: gcc6-compile.patch
-Patch91: gcc6-ucontext.patch
Source100: ghdl%{ghdlgitrev}.tar.bz2
Patch100: ghdl-llvmflags.patch
# Both following patches have been sent to upstream mailing list:
@@ -73,32 +168,7 @@ Patch106: ghdl-ppc64abort.patch
#
http://gcc.gnu.org/ml/gcc-patches/2012-10/msg02505.html
Patch200: upf.patch
Requires: gcc
-# (Build)Requires from fc gcc41 package
-%global multilib_64_archs sparc64 ppc64 s390x x86_64
-%ifarch s390x
-%global multilib_32_arch s390
-%endif
-%ifarch sparc64
-%global multilib_32_arch sparc
-%endif
-%ifarch ppc64
-%global multilib_32_arch ppc
-%endif
-%ifarch x86_64
-%global multilib_32_arch i386
-%endif
-#%ifarch %{ix86} x86_64
-#%global build_libmpx 1
-#%else
-%global build_libmpx 0
-#%endif
-%global build_isl 1
-%global build_libstdcxx_docs 1
-%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
-%global attr_ifunc 1
-%else
-%global attr_ifunc 0
-%endif
+
# Need binutils with -pie support >= 2.14.90.0.4-4
# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
@@ -106,26 +176,54 @@ Requires: gcc
# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
# Need binutils which support --build-id >= 2.17.50.0.17-3
-# Need binutils which support %gnu_unique_object >= 2.19.51.0.14
+# Need binutils which support %%gnu_unique_object >= 2.19.51.0.14
# Need binutils which support .cfi_sections >= 2.19.51.0.14-33
# Need binutils which support --no-add-needed >= 2.20.51.0.2-12
# Need binutils which support -plugin
+# Need binutils which support .loc view >= 2.30
+# Need binutils which support --generate-missing-build-notes=yes >= 2.31
+%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
+BuildRequires: binutils >= 2.31
+%else
BuildRequires: binutils >= 2.24
-BuildRequires: zlib-devel, gettext, bison, flex, sharutils, texinfo, texinfo-tex, gawk,
/usr/bin/pod2man
+%endif
+# While gcc doesn't include statically linked binaries, during testing
+# -static is used several times.
+BuildRequires: glibc-static
+BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
+BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
+BuildRequires: systemtap-sdt-devel >= 1.3
+BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
+BuildRequires: python2-devel, python3-devel
+BuildRequires: gcc, gcc-c++
+# For VTA guality testing
+BuildRequires: gdb
# Make sure pthread.h doesn't contain __thread tokens
# Make sure glibc supports stack protector
+# Make sure glibc supports DT_GNU_HASH
BuildRequires: glibc-devel >= 2.4.90-13
BuildRequires: elfutils-devel >= 0.147
BuildRequires: elfutils-libelf-devel >= 0.147
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
+%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
# Make sure glibc supports TFmode long double
BuildRequires: glibc >= 2.3.90-35
%endif
-# GHDL requires Ada to build
-BuildRequires: gcc-gnat >= 4.3, libgnat-devel >= 4.3
-# GCC build requirements
-BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
-BuildRequires: gcc-c++ >= 4.3
+%ifarch %{multilib_64_archs} sparcv9 ppc
+# Ensure glibc{,-devel} is installed for both multilib arches
+BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
+%endif
+%ifarch ia64
+BuildRequires: libunwind >= 0.98
+%endif
+%if %{build_isl}
+BuildRequires: isl = %{isl_version}
+BuildRequires: isl-devel = %{isl_version}
+%if 0%{?__isa_bits} == 64
+Requires: libisl.so.15()(64bit)
+%else
+Requires: libisl.so.15
+%endif
+%endif
# Need .eh_frame ld optimizations
# Need proper visibility support
# Need -pie support
@@ -133,21 +231,23 @@ BuildRequires: gcc-c++ >= 4.3
# On ppc64, need omit dot symbols support and --non-overlapping-opd
# Need binutils that owns /usr/bin/c++filt
# Need binutils that support .weakref
-Requires: binutils >= 2.16.91.0.3-1
-# Make sure gdb will understand DW_FORM_strp
-Conflicts: gdb < 5.1-2
-Requires: glibc-devel >= 2.2.90-12
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
-# Make sure glibc supports TFmode long double
-Requires: glibc >= 2.3.90-35
-%endif
-%ifarch %{multilib_64_archs} sparcv9 ppc
-# Ensure glibc{,-devel} is installed for both multilib arches
-BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
-%endif
-%ifarch ia64
-BuildRequires: libunwind >= 0.98
+# Need binutils that supports --hash-style=gnu
+# Need binutils that support mffgpr/mftgpr
+# Need binutils that support --build-id
+# Need binutils that support %%gnu_unique_object
+# Need binutils that support .cfi_sections
+# Need binutils that support --no-add-needed
+# Need binutils that support -plugin
+# Need binutils that support .loc view >= 2.30
+# Need binutils which support --generate-missing-build-notes=yes >= 2.31
+%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
+Requires: binutils >= 2.31
+%else
+Requires: binutils >= 2.24
%endif
+Requires: libgcc >= %{version}-%{release}
+Requires: libgomp = %{version}-%{release}
+
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
@@ -247,28 +347,63 @@ that tracks signal updates and schedules processes.
%endif
%prep
-%setup -q -n gcc-%{gcc_version}-%{DATE} -a 1 -a 2 -a 100
+%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 100
%patch0 -p0 -b .hack~
-%patch1 -p0 -b .java-nomulti~
-%patch2 -p0 -b .ppc32-retaddr~
-%patch3 -p0 -b .rh330771~
-%patch4 -p0 -b .i386-libgomp~
-%patch5 -p0 -b .sparc-config-detection~
-%patch6 -p0 -b .libgomp-omp_h-multilib~
-%patch7 -p0 -b .libtool-no-rpath~
+%patch2 -p0 -b .i386-libgomp~
+%patch3 -p0 -b .sparc-config-detection~
+%patch4 -p0 -b .libgomp-omp_h-multilib~
+%patch5 -p0 -b .libtool-no-rpath~
%if %{build_isl}
-%patch8 -p0 -b .isl-dl~
+%patch6 -p0 -b .isl-dl~
%endif
-%if %{build_libstdcxx_docs}
-%patch9 -p0 -b .libstdc++-docs~
+%patch8 -p0 -b .no-add-needed~
+%patch9 -p0 -b .foffload-default~
+%patch10 -p0 -b .Wno-format-security~
+%patch11 -p0 -b .rh1512529-aarch64~
+%if 0%{?fedora} == 28
+%patch12 -p0 -b .mcet~
+%endif
+%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
+%patch13 -p0 -b .rh1574936~
%endif
-%patch10 -p0 -b .no-add-needed~
-%patch11 -p0 -b .libgo-p224~
-rm -f libgo/go/crypto/elliptic/p224{,_test}.go
-%patch12 -p0 -b .aarch64-async-unw-tables~
-%patch13 -p0 -b .libsanitize-aarch64-va42~
-%patch90 -p0 -b .compile~
-%patch91 -p0 -b .ucontext~
+
+cd nvptx-tools-%{nvptx_tools_gitrev}
+%patch1000 -p1 -b .nvptx-tools-no-ptxas~
+%patch1001 -p1 -b .nvptx-tools-build~
+%patch1002 -p1 -b .nvptx-tools-glibc~
+cd ..
+
+echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
+
+cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
+
+echo 'TM_H += $(srcdir)/config/rs6000/rs6000-modes.h' >>
gcc/config/rs6000/t-rs6000
+
+./contrib/gcc_update --touch
+
+LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
+
+sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt
+
+%ifarch ppc
+if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
+ mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
+ rm -rf libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32
+fi
+%endif
+%ifarch sparc
+if [ -d libstdc++-v3/config/abi/post/sparc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/post/sparc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{,64/}baseline_symbols.txt
+ mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{32/,}baseline_symbols.txt
+ rm -rf libstdc++-v3/config/abi/post/sparc64-linux-gnu/32
+fi
+%endif
+
+# This test causes fork failures, because it spawns way too many threads
+rm -f gcc/testsuite/go.test/test/chan/goroutines.go
%patch200 -p0 -b .upf~
@@ -365,61 +500,13 @@ popd
# Undo the broken autoconf change in recent Fedora versions
export CONFIG_SITE=NONE
-%{__rm} -fr obj-%{gcc_target_platform}
-%{__mkdir} obj-%{gcc_target_platform}
-pushd obj-%{gcc_target_platform}
-
-%if %{build_isl}
-mkdir isl-build isl-install
-%ifarch s390 s390x
-ISL_FLAG_PIC=-fPIC
-%else
-ISL_FLAG_PIC=-fpic
-%endif
-cd isl-build
-../../isl-%{isl_version}/configure --disable-shared \
- CC=/usr/bin/gcc CXX=/usr/bin/g++ \
- CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..;
pwd`/isl-install
-make %{?_smp_mflags}
-make install
-cd ..
-
-mkdir cloog-build cloog-install
-cd cloog-build
-cat >> ../../cloog-%{cloog_version}/source/isl/constraints.c << \EOF
-#include <isl/flow.h>
-static void __attribute__((used)) *s1 = (void *) isl_union_map_compute_flow;
-static void __attribute__((used)) *s2 = (void *) isl_map_dump;
-EOF
-sed -i 's|libcloog|libgcc6privatecloog|g' \
- ../../cloog-%{cloog_version}/{,test/}Makefile.{am,in}
-isl_prefix=`cd ../isl-install; pwd` \
-../../cloog-%{cloog_version}/configure --with-isl=system \
- --with-isl-prefix=`cd ../isl-install; pwd` \
- CC=/usr/bin/gcc CXX=/usr/bin/g++ \
- CFLAGS="${CFLAGS:-%optflags}" CXXFLAGS="${CXXFLAGS:-%optflags}" \
- --prefix=`cd ..; pwd`/cloog-install
-sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g'
libtool
-sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
-make %{?_smp_mflags}
-make %{?_smp_mflags} install
-cd ../cloog-install/lib
-rm libgcc6privatecloog-isl.so{,.4}
-mv libgcc6privatecloog-isl.so.4.0.0 libcloog-isl.so.4
-ln -sf libcloog-isl.so.4 libcloog-isl.so
-ln -sf libcloog-isl.so.4 libcloog.so
-cd ../..
-%endif
-
CC=gcc
+CXX=g++
OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'`
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcet//g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fstack-clash-protection//g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-fcf-protection//g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e
's,-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1,,g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e
's/-Werror=format-security/-Wformat-security/g'`
%ifarch sparc
OPT_FLAGS=`echo $OPT_FLAGS|sed -e
's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
%endif
@@ -430,49 +517,84 @@ OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e
's/[[:blank:]]\+/ /g'`
case "$OPT_FLAGS" in
*-fasynchronous-unwind-tables*)
sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables
/' \
- ../libgcc/Makefile.in
+ libgcc/Makefile.in
;;
esac
+%if %{build_offload_nvptx}
+mkdir obji
+IROOT=`pwd`/obji
+cd nvptx-tools-%{nvptx_tools_gitrev}
+rm -rf obj-%{gcc_target_platform}
+mkdir obj-%{gcc_target_platform}
+cd obj-%{gcc_target_platform}
+CC="$CC" CXX="$CXX" CFLAGS="%{optflags}"
CXXFLAGS="%{optflags}" \
+../configure --prefix=%{_prefix}
+make %{?_smp_mflags}
+make install prefix=${IROOT}%{_prefix}
+cd ../..
+
+ln -sf nvptx-newlib-%{nvptx_newlib_gitrev}/newlib newlib
+rm -rf obj-offload-nvptx-none
+mkdir obj-offload-nvptx-none
+
+cd obj-offload-nvptx-none
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions /
/g' \
- | sed 's/ -Werror=format-security / /'`" \
+ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
- ../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
- --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap=no \
+ ../configure --disable-bootstrap --disable-sjlj-exceptions \
+ --enable-newlib-io-long-long --with-build-time-tools=${IROOT}%{_prefix}/nvptx-none/bin
\
+ --target nvptx-none --enable-as-accelerator-for=%{gcc_target_platform} \
+ --enable-languages=c,c++,fortran,lto \
+ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+ --with-bugurl=http://bugzilla.redhat.com/bugzilla \
+ --enable-checking=release --with-system-zlib \
+ --with-gcc-major-version-only --without-isl
+make %{?_smp_mflags}
+cd ..
+rm -f newlib
+%endif
+
+rm -rf obj-%{gcc_target_platform}
+mkdir obj-%{gcc_target_platform}
+pushd obj-%{gcc_target_platform}
+
+CONFIGURE_OPTS="\
+ --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+ --with-bugurl=http://bugzilla.redhat.com/bugzilla \
--enable-shared --enable-threads=posix --enable-checking=release \
%ifarch ppc64le
--enable-targets=powerpcle-linux \
%endif
-%ifarch ppc64le
- --disable-multilib \
+%ifarch ppc64le %{mips} riscv64
+ --disable-multilib \
%else
- --enable-multilib \
+ --enable-multilib \
%endif
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
- --enable-gnu-unique-object --enable-linker-build-id \
+ --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \
%ifnarch %{mips}
--with-linker-hash-style=gnu \
%endif
- --enable-languages=vhdl \
--enable-plugin --enable-initfini-array \
- --disable-libgcj \
-%if 0%{?fedora} >= 21 && 0%{?fedora} <= 22
- --with-default-libstdcxx-abi=gcc4-compatible \
-%endif
%if %{build_isl}
- --with-isl=`pwd`/isl-install --with-cloog=`pwd`/cloog-install \
+ --with-isl \
%else
- --without-isl --without-cloog \
+ --without-isl \
%endif
%if %{build_libmpx}
--enable-libmpx \
%else
--disable-libmpx \
%endif
+%if %{build_offload_nvptx}
+ --enable-offload-targets=nvptx-none \
+ --without-cuda-driver \
+%endif
%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
%if %{attr_ifunc}
- --enable-gnu-indirect-function \
+ --enable-gnu-indirect-function \
%endif
%endif
%ifarch %{arm}
@@ -508,6 +630,7 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS"
\
--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
%endif
%ifarch %{ix86} x86_64
+ --enable-cet \
--with-tune=generic \
%endif
%if 0%{?rhel} >= 7
@@ -527,13 +650,22 @@ CC="$CC" CXX="$CXX"
CFLAGS="$OPT_FLAGS" \
%endif
%ifarch s390 s390x
%if 0%{?rhel} >= 7
- --with-arch=z196 --with-tune=zEC12 --enable-decimal-float \
+%if 0%{?rhel} > 7
+ --with-arch=zEC12 --with-tune=z13 \
+%else
+ --with-arch=z196 --with-tune=zEC12 \
+%endif
+%else
+%if 0%{?fedora} >= 26
+ --with-arch=zEC12 --with-tune=z13 \
%else
- --with-arch=z9-109 --with-tune=z10 --enable-decimal-float \
+ --with-arch=z9-109 --with-tune=z10 \
+%endif
%endif
+ --enable-decimal-float \
%endif
%ifarch armv7hl
- --with-tune=cortex-a8 --with-arch=armv7-a \
+ --with-tune=generic-armv7-a --with-arch=armv7-a \
--with-float=hard --with-fpu=vfpv3-d16 --with-abi=aapcs-linux \
%endif
%ifarch mips mipsel
@@ -545,7 +677,15 @@ CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS"
\
%ifnarch sparc sparcv9 ppc
--build=%{gcc_target_platform} \
%endif
+ "
+CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
+ CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions /
/g' \
+ | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
+ XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+ ../configure --enable-bootstrap=no \
+ --enable-languages=vhdl \
+ $CONFIGURE_OPTS
# workaround for gcc gnat ICE on valid, do not compile trans-chap8 with optimization
%{__make} || true
@@ -562,19 +702,15 @@ gnatmake -c -aI%{_builddir}/gcc-%{gcc_version}-%{DATE}/gcc/vhdl
ortho_gcc-main \
#-gnatwae
popd
-#%ifarch %{arm} sparc sparcv9 sparc64
-#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS"
bootstrap
+#%ifarch sparc sparcv9 sparc64
+#make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
#%else
-#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS"
profiledbootstrap
+#make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
#%endif
#%{__make} %{?_smp_mflags}
%{__make}
-%if %{build_isl}
-cp -a cloog-install/lib/libcloog-isl.so.4 gcc/
-%endif
-
popd
%install
diff --git a/nvptx-tools-build.patch b/nvptx-tools-build.patch
new file mode 100644
index 0000000..53d7483
--- /dev/null
+++ b/nvptx-tools-build.patch
@@ -0,0 +1,11 @@
+--- nvptx-tools/nvptx-as.c.jj 2017-01-20 12:40:18.000000000 +0100
++++ nvptx-tools/nvptx-as.c 2017-01-20 12:43:53.864271442 +0100
+@@ -939,7 +939,7 @@ fork_execute (const char *prog, char *co
+ fatal_error ("%s: %m", errmsg);
+ }
+ else
+- fatal_error (errmsg);
++ fatal_error ("%s", errmsg);
+ }
+ do_wait (prog, pex);
+ }
diff --git a/nvptx-tools-glibc.patch b/nvptx-tools-glibc.patch
new file mode 100644
index 0000000..4b50114
--- /dev/null
+++ b/nvptx-tools-glibc.patch
@@ -0,0 +1,32 @@
+--- nvptx-tools/configure.ac.jj 2017-01-13 12:48:31.000000000 +0100
++++ nvptx-tools/configure.ac 2017-05-03 10:26:57.076092259 +0200
+@@ -66,6 +66,8 @@ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
+
++AC_CHECK_DECLS(getopt)
++
+ AC_CONFIG_SUBDIRS([libiberty])
+ AC_CONFIG_FILES([Makefile dejagnu.exp])
+ AC_OUTPUT
+--- nvptx-tools/configure.jj 2017-01-13 12:48:54.000000000 +0100
++++ nvptx-tools/configure 2017-05-03 10:27:13.503876809 +0200
+@@ -3963,6 +3963,18 @@ CPPFLAGS=$save_CPPFLAGS
+ LDFLAGS=$save_LDFLAGS
+ LIBS=$save_LIBS
+
++ac_fn_c_check_decl "$LINENO" "getopt"
"ac_cv_have_decl_getopt" "$ac_includes_default"
++if test "x$ac_cv_have_decl_getopt" = x""yes; then :
++ ac_have_decl=1
++else
++ ac_have_decl=0
++fi
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_DECL_GETOPT $ac_have_decl
++_ACEOF
++
++
+
+
+ subdirs="$subdirs libiberty"
diff --git a/nvptx-tools-no-ptxas.patch b/nvptx-tools-no-ptxas.patch
new file mode 100644
index 0000000..28bc597
--- /dev/null
+++ b/nvptx-tools-no-ptxas.patch
@@ -0,0 +1,947 @@
+--- nvptx-tools/configure.ac
++++ nvptx-tools/configure.ac
+@@ -51,6 +51,7 @@ LIBS="$LIBS -lcuda"
+ AC_CHECK_FUNCS([[cuGetErrorName] [cuGetErrorString]])
+ AC_CHECK_DECLS([[cuGetErrorName], [cuGetErrorString]],
+ [], [], [[#include <cuda.h>]])
++AC_CHECK_HEADERS(unistd.h sys/stat.h)
+
+ AC_MSG_CHECKING([for extra programs to build requiring -lcuda])
+ NVPTX_RUN=
+--- nvptx-tools/include/libiberty.h
++++ nvptx-tools/include/libiberty.h
+@@ -390,6 +390,17 @@ extern void hex_init (void);
+ /* Save files used for communication between processes. */
+ #define PEX_SAVE_TEMPS 0x4
+
++/* Max number of alloca bytes per call before we must switch to malloc.
++
++ ?? Swiped from gnulib's regex_internal.h header. Is this actually
++ the case? This number seems arbitrary, though sane.
++
++ The OS usually guarantees only one guard page at the bottom of the stack,
++ and a page size can be as small as 4096 bytes. So we cannot safely
++ allocate anything larger than 4096 bytes. Also care for the possibility
++ of a few compiler-allocated temporary stack slots. */
++#define MAX_ALLOCA_SIZE 4032
++
+ /* Prepare to execute one or more programs, with standard output of
+ each program fed to standard input of the next.
+ FLAGS As above.
+--- nvptx-tools/nvptx-as.c
++++ nvptx-tools/nvptx-as.c
+@@ -30,6 +30,9 @@
+ #include <string.h>
+ #include <wait.h>
+ #include <unistd.h>
++#ifdef HAVE_SYS_STAT_H
++#include <sys/stat.h>
++#endif
+ #include <errno.h>
+ #define obstack_chunk_alloc malloc
+ #define obstack_chunk_free free
+@@ -42,6 +45,38 @@
+
+ #include "version.h"
+
++#ifndef R_OK
++#define R_OK 4
++#define W_OK 2
++#define X_OK 1
++#endif
++
++#ifndef DIR_SEPARATOR
++# define DIR_SEPARATOR '/'
++#endif
++
++#if defined (_WIN32) || defined (__MSDOS__) \
++ || defined (__DJGPP__) || defined (__OS2__)
++# define HAVE_DOS_BASED_FILE_SYSTEM
++# define HAVE_HOST_EXECUTABLE_SUFFIX
++# define HOST_EXECUTABLE_SUFFIX ".exe"
++# ifndef DIR_SEPARATOR_2
++# define DIR_SEPARATOR_2 '\\'
++# endif
++# define PATH_SEPARATOR ';'
++#else
++# define PATH_SEPARATOR ':'
++#endif
++
++#ifndef DIR_SEPARATOR_2
++# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
++#else
++# define IS_DIR_SEPARATOR(ch) \
++ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
++#endif
++
++#define DIR_UP ".."
++
+ static const char *outname = NULL;
+
+ static void __attribute__ ((format (printf, 1, 2)))
+@@ -816,7 +851,7 @@ traverse (void **slot, void *data)
+ }
+
+ static void
+-process (FILE *in, FILE *out)
++process (FILE *in, FILE *out, int verify, const char *outname)
+ {
+ symbol_table = htab_create (500, hash_string_hash, hash_string_eq,
+ NULL);
+@@ -824,6 +859,18 @@ process (FILE *in, FILE *out)
+ const char *input = read_file (in);
+ Token *tok = tokenize (input);
+
++ /* By default, when ptxas is not in PATH, do minimalistic verification,
++ just require that the first non-comment directive is .version. */
++ if (verify < 0)
++ {
++ size_t i;
++ for (i = 0; tok[i].kind == K_comment; i++)
++ ;
++ if (tok[i].kind != K_dotted || !is_keyword (&tok[i], "version"))
++ fatal_error ("missing .version directive at start of file '%s'",
++ outname);
++ }
++
+ do
+ tok = parse_file (tok);
+ while (tok->kind);
+@@ -897,9 +944,83 @@ fork_execute (const char *prog, char *const *argv)
+ do_wait (prog, pex);
+ }
+
++/* Determine if progname is available in PATH. */
++static bool
++program_available (const char *progname)
++{
++ char *temp = getenv ("PATH");
++ if (temp)
++ {
++ char *startp, *endp, *nstore, *alloc_ptr = NULL;
++ size_t prefixlen = strlen (temp) + 1;
++ size_t len;
++ if (prefixlen < 2)
++ prefixlen = 2;
++
++ len = prefixlen + strlen (progname) + 1;
++#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
++ len += strlen (HOST_EXECUTABLE_SUFFIX);
++#endif
++ if (len < MAX_ALLOCA_SIZE)
++ nstore = (char *) alloca (len);
++ else
++ alloc_ptr = nstore = (char *) malloc (len);
++
++ startp = endp = temp;
++ while (1)
++ {
++ if (*endp == PATH_SEPARATOR || *endp == 0)
++ {
++ if (endp == startp)
++ {
++ nstore[0] = '.';
++ nstore[1] = DIR_SEPARATOR;
++ nstore[2] = '\0';
++ }
++ else
++ {
++ memcpy (nstore, startp, endp - startp);
++ if (! IS_DIR_SEPARATOR (endp[-1]))
++ {
++ nstore[endp - startp] = DIR_SEPARATOR;
++ nstore[endp - startp + 1] = 0;
++ }
++ else
++ nstore[endp - startp] = 0;
++ }
++ strcat (nstore, progname);
++ if (! access (nstore, X_OK)
++#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
++ || ! access (strcat (nstore, HOST_EXECUTABLE_SUFFIX), X_OK)
++#endif
++ )
++ {
++#if defined (HAVE_SYS_STAT_H) && defined (S_ISREG)
++ struct stat st;
++ if (stat (nstore, &st) >= 0 && S_ISREG (st.st_mode))
++#endif
++ {
++ free (alloc_ptr);
++ return true;
++ }
++ }
++
++ if (*endp == 0)
++ break;
++ endp = startp = endp + 1;
++ }
++ else
++ endp++;
++ }
++ free (alloc_ptr);
++ }
++ return false;
++}
++
+ static struct option long_options[] = {
+ {"traditional-format", no_argument, 0, 0 },
+ {"save-temps", no_argument, 0, 0 },
++ {"verify", no_argument, 0, 0 },
+ {"no-verify", no_argument, 0, 0 },
+ {"help", no_argument, 0, 'h' },
+ {"version", no_argument, 0, 'V' },
+@@ -912,7 +1033,7 @@ main (int argc, char **argv)
+ FILE *in = stdin;
+ FILE *out = stdout;
+ bool verbose __attribute__((unused)) = false;
+- bool verify = true;
++ int verify = -1;
+ const char *smver = "sm_30";
+
+ int o;
+@@ -923,7 +1044,9 @@ main (int argc, char **argv)
+ {
+ case 0:
+ if (option_index == 2)
+- verify = false;
++ verify = 1;
++ else if (option_index == 3)
++ verify = 0;
+ break;
+ case 'v':
+ verbose = true;
+@@ -948,7 +1071,8 @@ Usage: nvptx-none-as [option...] [asmfile]\n\
+ Options:\n\
+ -o FILE Write output to FILE\n\
+ -v Be verbose\n\
++ --verify Do verify output is acceptable to ptxas\n\
+ --no-verify Do not verify output is acceptable to ptxas\n\
+ --help Print this help and exit\n\
+ --version Print version number and exit\n\
+ \n\
+@@ -983,11 +1108,17 @@ This program has absolutely no warranty.\n",
+ if (!in)
+ fatal_error ("cannot open input ptx file");
+
+- process (in, out);
+- if (outname)
++ if (outname == NULL)
++ verify = 0;
++ else if (verify == -1)
++ if (program_available ("ptxas"))
++ verify = 1;
++
++ process (in, out, verify, outname);
++ if (outname)
+ fclose (out);
+
+- if (verify && outname)
++ if (verify > 0)
+ {
+ struct obstack argv_obstack;
+ obstack_init (&argv_obstack);
+--- nvptx-tools/configure
++++ nvptx-tools/configure
+@@ -168,7 +168,8 @@ test x\$exitcode = x0 || exit 1"
+ as_suggested="
as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested"
as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested"
as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" !=
\"x\$as_lineno_2'\$as_run'\" &&
+- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" =
\"x\$as_lineno_2'\$as_run'\"' || exit 1"
++ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" =
\"x\$as_lineno_2'\$as_run'\"' || exit 1
++test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+ else
+@@ -552,11 +553,50 @@ PACKAGE_URL=
+
+ ac_unique_file="nvptx-tools"
+ ac_unique_file="nvptx-as.c"
++# Factoring default headers for most tests.
++ac_includes_default="\
++#include <stdio.h>
++#ifdef HAVE_SYS_TYPES_H
++# include <sys/types.h>
++#endif
++#ifdef HAVE_SYS_STAT_H
++# include <sys/stat.h>
++#endif
++#ifdef STDC_HEADERS
++# include <stdlib.h>
++# include <stddef.h>
++#else
++# ifdef HAVE_STDLIB_H
++# include <stdlib.h>
++# endif
++#endif
++#ifdef HAVE_STRING_H
++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
++# include <memory.h>
++# endif
++# include <string.h>
++#endif
++#ifdef HAVE_STRINGS_H
++# include <strings.h>
++#endif
++#ifdef HAVE_INTTYPES_H
++# include <inttypes.h>
++#endif
++#ifdef HAVE_STDINT_H
++# include <stdint.h>
++#endif
++#ifdef HAVE_UNISTD_H
++# include <unistd.h>
++#endif"
++
+ enable_option_checking=no
+ ac_subst_vars='LTLIBOBJS
+ LIBOBJS
+ subdirs
+ NVPTX_RUN
++EGREP
++GREP
++CPP
+ CUDA_DRIVER_LDFLAGS
+ CUDA_DRIVER_CPPFLAGS
+ AR
+@@ -635,7 +675,8 @@ LIBS
+ CPPFLAGS
+ CXX
+ CXXFLAGS
+-CCC'
++CCC
++CPP'
+ ac_subdirs_all='libiberty'
+
+ # Initialize some variables set by options.
+@@ -1267,6 +1308,7 @@ Some influential environment variables:
+ you have headers in a nonstandard directory <include dir>
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
++ CPP C preprocessor
+
+ Use these variables to override the choices made by `configure' or to help
+ it to find libraries and programs with nonstandard names/locations.
+@@ -1575,6 +1617,203 @@ $as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
+
+ } # ac_fn_c_check_decl
++
++# ac_fn_c_try_cpp LINENO
++# ----------------------
++# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
++ac_fn_c_try_cpp ()
++{
++ as_lineno=${as_lineno-"$1"}
as_lineno_stack=as_lineno_stack=$as_lineno_stack
++ if { { ac_try="$ac_cpp conftest.$ac_ext"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
++$as_echo "$ac_try_echo"; } >&5
++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
++ ac_status=$?
++ if test -s conftest.err; then
++ grep -v '^ *+' conftest.err >conftest.er1
++ cat conftest.er1 >&5
++ mv -f conftest.er1 conftest.err
++ fi
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; } >/dev/null && {
++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ }; then :
++ ac_retval=0
++else
++ $as_echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_retval=1
++fi
++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
++ return $ac_retval
++
++} # ac_fn_c_try_cpp
++
++# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
++# -------------------------------------------------------
++# Tests whether HEADER exists, giving a warning if it cannot be compiled using
++# the include files in INCLUDES and setting the cache variable VAR
++# accordingly.
++ac_fn_c_check_header_mongrel ()
++{
++ as_lineno=${as_lineno-"$1"}
as_lineno_stack=as_lineno_stack=$as_lineno_stack
++ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
++$as_echo_n "checking for $2... " >&6; }
++if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
++ $as_echo_n "(cached) " >&6
++fi
++eval ac_res=\$$3
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
++$as_echo "$ac_res" >&6; }
++else
++ # Is the header compilable?
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
++$as_echo_n "checking $2 usability... " >&6; }
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++$4
++#include <$2>
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ac_header_compiler=yes
++else
++ ac_header_compiler=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler"
>&5
++$as_echo "$ac_header_compiler" >&6; }
++
++# Is the header present?
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
++$as_echo_n "checking $2 presence... " >&6; }
++cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <$2>
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++ ac_header_preproc=yes
++else
++ ac_header_preproc=no
++fi
++rm -f conftest.err conftest.$ac_ext
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc"
>&5
++$as_echo "$ac_header_preproc" >&6; }
++
++# So? What about this header?
++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
++ yes:no: )
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler,
rejected by the preprocessor!" >&5
++$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the
preprocessor!" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the
compiler's result" >&5
++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result"
>&2;}
++ ;;
++ no:yes:* )
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be
compiled" >&5
++$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing
prerequisite headers?" >&5
++$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?"
>&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf
documentation" >&5
++$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section
\"Present But Cannot Be Compiled\"" >&5
++$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be
Compiled\"" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the
compiler's result" >&5
++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result"
>&2;}
++ ;;
++esac
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
++$as_echo_n "checking for $2... " >&6; }
++if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
++ $as_echo_n "(cached) " >&6
++else
++ eval "$3=\$ac_header_compiler"
++fi
++eval ac_res=\$$3
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
++$as_echo "$ac_res" >&6; }
++fi
++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
++
++} # ac_fn_c_check_header_mongrel
++
++# ac_fn_c_try_run LINENO
++# ----------------------
++# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
++# that executables *can* be run.
++ac_fn_c_try_run ()
++{
++ as_lineno=${as_lineno-"$1"}
as_lineno_stack=as_lineno_stack=$as_lineno_stack
++ if { { ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
++$as_echo "$ac_try_echo"; } >&5
++ (eval "$ac_link") 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
++ { { case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
++$as_echo "$ac_try_echo"; } >&5
++ (eval "$ac_try") 2>&5
++ ac_status=$?
++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++ test $ac_status = 0; }; }; then :
++ ac_retval=0
++else
++ $as_echo "$as_me: program exited with status $ac_status" >&5
++ $as_echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_retval=$ac_status
++fi
++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
++ return $ac_retval
++
++} # ac_fn_c_try_run
++
++# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
++# -------------------------------------------------------
++# Tests whether HEADER exists and can be compiled using the include files in
++# INCLUDES, setting the cache variable VAR accordingly.
++ac_fn_c_check_header_compile ()
++{
++ as_lineno=${as_lineno-"$1"}
as_lineno_stack=as_lineno_stack=$as_lineno_stack
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
++$as_echo_n "checking for $2... " >&6; }
++if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++$4
++#include <$2>
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ eval "$3=yes"
++else
++ eval "$3=no"
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++fi
++eval ac_res=\$$3
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
++$as_echo "$ac_res" >&6; }
++ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=;
unset as_lineno;}
++
++} # ac_fn_c_check_header_compile
+ cat >config.log <<_ACEOF
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+@@ -3284,6 +3523,418 @@ cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_CUGETERRORSTRING $ac_have_decl
+ _ACEOF
+
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
>&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C
preprocessor" >&5
++$as_echo_n "checking how to run the C preprocessor... " >&6; }
++# On Suns, sometimes $CPP names a directory.
++if test -n "$CPP" && test -d "$CPP"; then
++ CPP=
++fi
++if test -z "$CPP"; then
++ if test "${ac_cv_prog_CPP+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ # Double quotes because CPP needs to be expanded
++ for CPP in "$CC -E" "$CC -E -traditional-cpp"
"/lib/cpp"
++ do
++ ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++ Syntax error
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++
++else
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether nonexistent headers
++ # can be detected and how.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ac_nonexistent.h>
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++ # Broken: success on invalid input.
++continue
++else
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.$ac_ext
++
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then :
++ break
++fi
++
++ done
++ ac_cv_prog_CPP=$CPP
++
++fi
++ CPP=$ac_cv_prog_CPP
++else
++ ac_cv_prog_CPP=$CPP
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
++$as_echo "$CPP" >&6; }
++ac_preproc_ok=false
++for ac_c_preproc_warn_flag in '' yes
++do
++ # Use a header file that comes with gcc, so configuring glibc
++ # with a fresh cross-compiler works.
++ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ # <limits.h> exists even on freestanding compilers.
++ # On the NeXT, cc -E runs the code through the compiler's parser,
++ # not just through cpp. "Syntax error" is here to catch this case.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++ Syntax error
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++
++else
++ # Broken: fails on valid input.
++continue
++fi
++rm -f conftest.err conftest.$ac_ext
++
++ # OK, works on sane cases. Now check whether nonexistent headers
++ # can be detected and how.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ac_nonexistent.h>
++_ACEOF
++if ac_fn_c_try_cpp "$LINENO"; then :
++ # Broken: success on invalid input.
++continue
++else
++ # Passes both tests.
++ac_preproc_ok=:
++break
++fi
++rm -f conftest.err conftest.$ac_ext
++
++done
++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
++rm -f conftest.err conftest.$ac_ext
++if $ac_preproc_ok; then :
++
++else
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':"
>&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error "C preprocessor \"$CPP\" fails sanity check
++See \`config.log' for more details." "$LINENO" 5; }
++fi
++
++ac_ext=c
++ac_cpp='$CPP $CPPFLAGS'
++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
>&5'
++ac_compiler_gnu=$ac_cv_c_compiler_gnu
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines
and -e" >&5
++$as_echo_n "checking for grep that handles long lines and -e... " >&6;
}
++if test "${ac_cv_path_GREP+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -z "$GREP"; then
++ ac_path_GREP_found=false
++ # Loop through the user's path and test for each of PROGNAME-LIST
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in grep ggrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_GREP" && $as_test_x
"$ac_path_GREP"; } || continue
++# Check for GNU ac_path_GREP and select it if it is found.
++ # Check for GNU $ac_path_GREP
++case `"$ac_path_GREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
++*)
++ ac_count=0
++ $as_echo_n 0123456789 >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ $as_echo 'GREP' >> "conftest.nl"
++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' <
"conftest.nl" >"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 ||
break
++ as_fn_arith $ac_count + 1 && ac_count=$as_val
++ if test $ac_count -gt ${ac_path_GREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_GREP="$ac_path_GREP"
++ ac_path_GREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++ $ac_path_GREP_found && break 3
++ done
++ done
++ done
++IFS=$as_save_IFS
++ if test -z "$ac_cv_path_GREP"; then
++ as_fn_error "no acceptable grep could be found in
$PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
++ fi
++else
++ ac_cv_path_GREP=$GREP
++fi
++
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
++$as_echo "$ac_cv_path_GREP" >&6; }
++ GREP="$ac_cv_path_GREP"
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
++$as_echo_n "checking for egrep... " >&6; }
++if test "${ac_cv_path_EGREP+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
++ then ac_cv_path_EGREP="$GREP -E"
++ else
++ if test -z "$EGREP"; then
++ ac_path_EGREP_found=false
++ # Loop through the user's path and test for each of PROGNAME-LIST
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_prog in egrep; do
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
++ { test -f "$ac_path_EGREP" && $as_test_x
"$ac_path_EGREP"; } || continue
++# Check for GNU ac_path_EGREP and select it if it is found.
++ # Check for GNU $ac_path_EGREP
++case `"$ac_path_EGREP" --version 2>&1` in
++*GNU*)
++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
++*)
++ ac_count=0
++ $as_echo_n 0123456789 >"conftest.in"
++ while :
++ do
++ cat "conftest.in" "conftest.in" >"conftest.tmp"
++ mv "conftest.tmp" "conftest.in"
++ cp "conftest.in" "conftest.nl"
++ $as_echo 'EGREP' >> "conftest.nl"
++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl"
>"conftest.out" 2>/dev/null || break
++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 ||
break
++ as_fn_arith $ac_count + 1 && ac_count=$as_val
++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
++ # Best one so far, save it but keep looking for a better one
++ ac_cv_path_EGREP="$ac_path_EGREP"
++ ac_path_EGREP_max=$ac_count
++ fi
++ # 10*(2^10) chars as input seems more than enough
++ test $ac_count -gt 10 && break
++ done
++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
++esac
++
++ $ac_path_EGREP_found && break 3
++ done
++ done
++ done
++IFS=$as_save_IFS
++ if test -z "$ac_cv_path_EGREP"; then
++ as_fn_error "no acceptable egrep could be found in
$PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
++ fi
++else
++ ac_cv_path_EGREP=$EGREP
++fi
++
++ fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP"
>&5
++$as_echo "$ac_cv_path_EGREP" >&6; }
++ EGREP="$ac_cv_path_EGREP"
++
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files"
>&5
++$as_echo_n "checking for ANSI C header files... " >&6; }
++if test "${ac_cv_header_stdc+set}" = set; then :
++ $as_echo_n "(cached) " >&6
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdlib.h>
++#include <stdarg.h>
++#include <string.h>
++#include <float.h>
++
++int
++main ()
++{
++
++ ;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++ ac_cv_header_stdc=yes
++else
++ ac_cv_header_stdc=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
++if test $ac_cv_header_stdc = yes; then
++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <string.h>
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "memchr" >/dev/null 2>&1; then :
++
++else
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++fi
++
++if test $ac_cv_header_stdc = yes; then
++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <stdlib.h>
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "free" >/dev/null 2>&1; then :
++
++else
++ ac_cv_header_stdc=no
++fi
++rm -f conftest*
++
++fi
++
++if test $ac_cv_header_stdc = yes; then
++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
++ if test "$cross_compiling" = yes; then :
++ :
++else
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#include <ctype.h>
++#include <stdlib.h>
++#if ((' ' & 0x0FF) == 0x020)
++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
++#else
++# define ISLOWER(c) \
++ (('a' <= (c) && (c) <= 'i') \
++ || ('j' <= (c) && (c) <= 'r') \
++ || ('s' <= (c) && (c) <= 'z'))
++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
++#endif
++
++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
++int
++main ()
++{
++ int i;
++ for (i = 0; i < 256; i++)
++ if (XOR (islower (i), ISLOWER (i))
++ || toupper (i) != TOUPPER (i))
++ return 2;
++ return 0;
++}
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++
++else
++ ac_cv_header_stdc=no
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++ conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++fi
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc"
>&5
++$as_echo "$ac_cv_header_stdc" >&6; }
++if test $ac_cv_header_stdc = yes; then
++
++$as_echo "#define STDC_HEADERS 1" >>confdefs.h
++
++fi
++
++# On IRIX 5.3, sys/types and inttypes.h are conflicting.
++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
++ inttypes.h stdint.h unistd.h
++do :
++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
++ac_fn_c_check_header_compile "$LINENO" "$ac_header"
"$as_ac_Header" "$ac_includes_default
++"
++eval as_val=\$$as_ac_Header
++ if test "x$as_val" = x""yes; then :
++ cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
++
++for ac_header in unistd.h sys/stat.h
++do :
++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
++ac_fn_c_check_header_mongrel "$LINENO" "$ac_header"
"$as_ac_Header" "$ac_includes_default"
++eval as_val=\$$as_ac_Header
++ if test "x$as_val" = x""yes; then :
++ cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra programs to build
requiring -lcuda" >&5
+ $as_echo_n "checking for extra programs to build requiring -lcuda... "
>&6; }
diff --git a/sources b/sources
index 976fa15..cb0d743 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
-SHA512 (isl-0.14.tar.xz) =
cf43868d466d6ff08c5e15345d222ad153e8c4e86831f9854df716eb914c6c15f4c44b73aa6e0b16eb556d1a4d3c26af6f71e85421bf464cbbd053d5f3c515ee
-SHA512 (cloog-0.18.3.tar.gz) =
e1bb557b69d38dde7a6b7acde661005bec2c3b5ffa75df32514bff70c8bfe6a12befe24c0448b85e87cf818f3a83cdec2b54066592b7d300c818611085ce17fb
-SHA512 (gcc-6.3.1-20170118.tar.bz2) =
a2c6261687dc44e980c81c3be04162873195f7e5ed3ceacdde0544f6e4f2d081eef12fe5f73f2f5ac7007dbd823c0e6d1ff5a5e0e7135c46fcc30efce3960def
+SHA512 (gcc-8.2.1-20190109.tar.xz) =
d699b52baa2c54a71f2fef2dd77701baa836737975938d67fb532f1a54638b1442fc04b560fd74e66b44195e4de9ce485100b9bdbac569e4c3abad053a96bc33
+SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) =
94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04
+SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) =
a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1
SHA512 (ghdl.20190129git3c30e3b.tar.bz2) =
79573bca36ab66e01bdff11adbdfbaddfe5a6db59b90e6cea95c7d99c27ecd8ea67e1d18deef6486687c79ee459ae65b8dd5f6485ff1fc968fd36d87cf9b4439
commit b29161f17bee8bcfab045f669eeece035ebbf286
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 18:13:28 2019 +0100
add changelog entry
diff --git a/ghdl.spec b/ghdl.spec
index fb61988..d2e0573 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -714,6 +714,9 @@ popd
%endif
%changelog
+* Tue Jan 29 2019 Thomas Sailer <t.sailer(a)alumni.ethz.ch> -
0.35dev-0.20190129git3c30e3b.0
+- update to 0.35dev (20190129git3c30e3b)
+
* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
0.35dev-1.20180520git66bb071.0
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
commit 8abbf168a820c1b7e042dc759d06b098f2b015f6
Author: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
Date: Tue Jan 29 17:44:41 2019 +0100
update ghdl to 20190129git3c30e3b
diff --git a/ghdl-llvmflags.patch b/ghdl-llvmflags.patch
new file mode 100644
index 0000000..2f94e7a
--- /dev/null
+++ b/ghdl-llvmflags.patch
@@ -0,0 +1,11 @@
+--- ghdl/src/ortho/llvm4-nodebug/Makefile 2019-01-29 17:30:36.024252822 +0100
++++ ghdl/src/ortho/llvm4-nodebug/Makefile 2019-01-29 17:31:18.958454509 +0100
+@@ -15,7 +15,7 @@
+ $(LDFLAGS) `$(LLVM_CONFIG) --ldflags --libs --system-libs`
+
+ llvm-cbindings.o: $(ortho_srcdir)/llvm4-nodebug/llvm-cbindings.cpp
+- $(CXX) -c `$(LLVM_CONFIG) --cxxflags` -o $@ $<
++ $(CXX) -c `$(LLVM_CONFIG) --cxxflags|sed -e s,-fstack-clash-protection,,` -o $@ $<
+
+ clean:
+ $(RM) -f *.o *.ali ortho_code_main
diff --git a/ghdl.spec b/ghdl.spec
index e71d0e8..fb61988 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -2,7 +2,7 @@
%global SVNREV 244565
%global gcc_version 6.3.1
%global ghdlver 0.35dev
-%global ghdlgitrev .20180520git66bb071
+%global ghdlgitrev .20190129git3c30e3b
%ifarch %{ix86} x86_64
%bcond_without mcode
@@ -63,6 +63,7 @@ Patch13: gcc6-libsanitize-aarch64-va42.patch
Patch90: gcc6-compile.patch
Patch91: gcc6-ucontext.patch
Source100: ghdl%{ghdlgitrev}.tar.bz2
+Patch100: ghdl-llvmflags.patch
# Both following patches have been sent to upstream mailing list:
# From: Thomas Sailer <t.sailer(a)alumni.ethz.ch>
# To: ghdl-discuss(a)gna.org
@@ -269,7 +270,9 @@ rm -f libgo/go/crypto/elliptic/p224{,_test}.go
%patch90 -p0 -b .compile~
%patch91 -p0 -b .ucontext~
-%patch200 -p0 -b .upf
+%patch200 -p0 -b .upf~
+
+%patch100 -p0 -b .llvmflags~
%if %{without gnatwae}
perl -i -pe 's,-gnatwae,,' ghdl/dist/gcc/Make-lang.in
diff --git a/sources b/sources
index e90882b..976fa15 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
SHA512 (isl-0.14.tar.xz) =
cf43868d466d6ff08c5e15345d222ad153e8c4e86831f9854df716eb914c6c15f4c44b73aa6e0b16eb556d1a4d3c26af6f71e85421bf464cbbd053d5f3c515ee
SHA512 (cloog-0.18.3.tar.gz) =
e1bb557b69d38dde7a6b7acde661005bec2c3b5ffa75df32514bff70c8bfe6a12befe24c0448b85e87cf818f3a83cdec2b54066592b7d300c818611085ce17fb
SHA512 (gcc-6.3.1-20170118.tar.bz2) =
a2c6261687dc44e980c81c3be04162873195f7e5ed3ceacdde0544f6e4f2d081eef12fe5f73f2f5ac7007dbd823c0e6d1ff5a5e0e7135c46fcc30efce3960def
-SHA512 (ghdl.20180520git66bb071.tar.bz2) =
6e2382ff656cb59ada5dc79caba470447cbc5b65080616f51154a73bd238fbc0783e10f095915745f3efc7bcb2a7b249d01f81396452c8af6cee67c8905cf82c
+SHA512 (ghdl.20190129git3c30e3b.tar.bz2) =
79573bca36ab66e01bdff11adbdfbaddfe5a6db59b90e6cea95c7d99c27ecd8ea67e1d18deef6486687c79ee459ae65b8dd5f6485ff1fc968fd36d87cf9b4439
commit 217d0aad5f7d21cded6acdfb536db48c20c49546
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Mon Jan 28 20:17:45 2019 +0100
Remove obsolete Group tag
References:
https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
diff --git a/ghdl.spec b/ghdl.spec
index 3abeda6..e71d0e8 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -31,7 +31,6 @@ Name: ghdl
Version: %{ghdlver}
Release: 1%{ghdlgitrev}.0%{?dist}
License: GPLv2+
-Group: Development/Languages
URL:
http://ghdl.free.fr/
# HOWTO create source files from ghdl git at
github.com
# check out the git repo
@@ -200,7 +199,6 @@ Ada95.
%package grt
Summary: GHDL runtime libraries
-Group: System Environment/Libraries
# rhbz #316311
Requires: zlib-devel, libgnat >= 4.3
@@ -213,7 +211,6 @@ that tracks signal updates and schedules processes.
%if %{with mcode}
%package mcode
Summary: GHDL with mcode backend
-Group: Development/Languages
Requires: ghdl-mcode-grt = %{version}-%{release}
%description mcode
@@ -222,7 +219,6 @@ backend provides for faster compile time at the expense of longer run
time.
%package mcode-grt
Summary: GHDL mcode runtime libraries
-Group: System Environment/Libraries
%description mcode-grt
This package contains the runtime libraries needed to link ghdl-mcode-compiled
@@ -234,7 +230,6 @@ that tracks signal updates and schedules processes.
%if %{with llvm}
%package llvm
Summary: GHDL with LLVM backend
-Group: Development/Languages
Requires: ghdl-llvm-grt = %{version}-%{release}
%description llvm
@@ -243,7 +238,6 @@ backend is experimental.
%package llvm-grt
Summary: GHDL LLVM runtime libraries
-Group: System Environment/Libraries
%description llvm-grt
This package contains the runtime libraries needed to link ghdl-llvm-compiled
commit 48dc5afab7146129e07fd5dc6d9ad31693eddcbb
Author: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
Date: Sun Jan 27 18:58:13 2019 +0100
Remove obsolete scriptlets
References:
https://fedoraproject.org/wiki/Changes/RemoveObsoleteScriptlets
Signed-off-by: Igor Gnatenko <ignatenkobrain(a)fedoraproject.org>
diff --git a/ghdl.spec b/ghdl.spec
index e8efc41..3abeda6 100644
--- a/ghdl.spec
+++ b/ghdl.spec
@@ -72,8 +72,6 @@ Source100: ghdl%{ghdlgitrev}.tar.bz2
Patch106: ghdl-ppc64abort.patch
#
http://gcc.gnu.org/ml/gcc-patches/2012-10/msg02505.html
Patch200: upf.patch
-Requires(post): /sbin/install-info
-Requires(preun): /sbin/install-info
Requires: gcc
# (Build)Requires from fc gcc41 package
%global multilib_64_archs sparc64 ppc64 s390x x86_64
@@ -681,14 +679,6 @@ popd
%{__mv} %{buildroot}%{_includedir}/vpi_user.h %{buildroot}%{_includedir}/ghdl
%{__rm} %{buildroot}%{_bindir}/gcov-tool
-%post
-[ -f %{_infodir}/ghdl.info.gz ] && \
- /sbin/install-info %{_infodir}/ghdl.info.gz %{_infodir}/dir || :
-
-%preun
-[ -f %{_infodir}/ghdl.info.gz ] && [ $1 = 0 ] && \
- /sbin/install-info --delete %{_infodir}/ghdl.info.gz %{_infodir}/dir || :
-
%files
%{_bindir}/ghdl
%{_infodir}/ghdl.info.gz