CentOS Sources
2017-10-24 2e5ef6c7934d4417e095855478736742b35bd0af
import devtoolset-7-gcc-7.2.1-1.el7
23 files added
1 files deleted
13392 ■■■■■ changed files
.devtoolset-7-gcc.metadata 4 ●●●● patch | view | raw | blame | history
.gitignore 4 ●●●● patch | view | raw | blame | history
README.md 4 ●●●● patch | view | raw | blame | history
SOURCES/doxygen-1.7.1-config.patch 95 ●●●●● patch | view | raw | blame | history
SOURCES/doxygen-1.7.5-timestamp.patch 63 ●●●●● patch | view | raw | blame | history
SOURCES/doxygen-1.8.0-rh856725.patch 15 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-Wno-format-security.patch 27 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-aarch64-async-unw-tables.patch 35 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-alt-compat-test.patch 49 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-foffload-default.patch 117 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-hack.patch 135 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-i386-libgomp.patch 11 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-isl-dl.patch 711 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-isl-dl2.patch 71 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-libgomp-omp_h-multilib.patch 17 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-libstdc++-compat.patch 9050 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-libstdc++-docs.patch 24 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-libstdc++44-xfail.patch 190 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-libtool-no-rpath.patch 27 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-no-add-needed.patch 50 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-ppc32-retaddr.patch 87 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-rh1118870.patch 20 ●●●●● patch | view | raw | blame | history
SOURCES/gcc7-sparc-config-detection.patch 40 ●●●●● patch | view | raw | blame | history
SPECS/gcc.spec 2546 ●●●●● patch | view | raw | blame | history
.devtoolset-7-gcc.metadata
New file
@@ -0,0 +1,4 @@
7f4348418dc3efefd357b32a2b5c8010211ab284 SOURCES/doxygen-1.8.0.src.tar.gz
df3ff377895cf96b3439e107e62142bcbed8d046 SOURCES/gcc-7.2.1-20170829.tar.bz2
06409adda1095640ceec7106579fc29be9a57853 SOURCES/isl-0.16.1.tar.xz
5ef03ca7aee134fe7dfecb6c9d048799f0810278 SOURCES/mpc-0.8.1.tar.gz
.gitignore
New file
@@ -0,0 +1,4 @@
SOURCES/doxygen-1.8.0.src.tar.gz
SOURCES/gcc-7.2.1-20170829.tar.bz2
SOURCES/isl-0.16.1.tar.xz
SOURCES/mpc-0.8.1.tar.gz
README.md
File was deleted
SOURCES/doxygen-1.7.1-config.patch
New file
@@ -0,0 +1,95 @@
diff -up doxygen-1.7.1/addon/doxywizard/Makefile.in.config doxygen-1.7.1/addon/doxywizard/Makefile.in
--- doxygen-1.7.1/addon/doxywizard/Makefile.in.config    2010-05-23 16:51:31.000000000 +0200
+++ doxygen-1.7.1/addon/doxywizard/Makefile.in    2010-07-19 13:38:33.000000000 +0200
@@ -10,8 +10,6 @@
 # See the GNU General Public License for more details.
 #
-QMAKE=qmake $(MKSPECS)
-
 all: Makefile.doxywizard
     $(MAKE) -f Makefile.doxywizard
@@ -29,11 +27,11 @@ distclean: Makefile.doxywizard
     $(RM) Makefile.doxywizard
 install:
-    $(INSTTOOL) -d $(INSTALL)/bin
-    $(INSTTOOL) -m 755 ../../bin/doxywizard $(INSTALL)/bin
-    $(INSTTOOL) -d $(INSTALL)/$(MAN1DIR)
+    $(INSTTOOL) -d $(DESTDIR)$(INSTALL)/bin
+    $(INSTTOOL) -m 755 ../../bin/doxywizard $(DESTDIR)$(INSTALL)/bin
+    $(INSTTOOL) -d $(DESTDIR)$(INSTALL)/$(MAN1DIR)
     cat ../../doc/doxywizard.1 | sed -e "s/DATE/$(DATE)/g" -e "s/VERSION/$(VERSION)/g" > doxywizard.1
-    $(INSTTOOL) -m 644 doxywizard.1 $(INSTALL)/$(MAN1DIR)/doxywizard.1
+    $(INSTTOOL) -m 644 doxywizard.1 $(DESTDIR)$(INSTALL)/$(MAN1DIR)/doxywizard.1
     rm doxywizard.1
 FORCE:
diff -up doxygen-1.7.1/configure.config doxygen-1.7.1/configure
--- doxygen-1.7.1/configure.config    2010-06-25 11:46:38.000000000 +0200
+++ doxygen-1.7.1/configure    2010-07-19 12:03:53.000000000 +0200
@@ -268,9 +268,10 @@ if test "$f_wizard" = YES; then
   if test -z "$QTDIR"; then
     echo "  QTDIR environment variable not set!"
     echo -n "  Checking for Qt..."
-    for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do
+    for d in /usr/{lib64,lib,share,qt}/{qt-4,qt4,qt,qt*,4} /usr; do
       if test -x "$d/bin/qmake"; then
         QTDIR=$d
+        QMAKE=$d/bin/qmake
       fi
     done
   else
@@ -485,6 +486,8 @@ INSTTOOL  = $f_insttool
 DOXYDOCS  = ..
 DOCDIR    = $f_docdir
 QTDIR     = $QTDIR
+QMAKE     = $QMAKE
+MAN1DIR    = share/man/man1
 EOF
 if test "$f_dot" != NO; then
diff -up doxygen-1.7.1/Makefile.in.config doxygen-1.7.1/Makefile.in
--- doxygen-1.7.1/Makefile.in.config    2009-08-20 21:41:13.000000000 +0200
+++ doxygen-1.7.1/Makefile.in    2010-07-19 12:03:53.000000000 +0200
@@ -44,8 +44,6 @@ distclean: clean
 DATE=$(shell date "+%B %Y")
-MAN1DIR = man/man1
-
 install: doxywizard_install
     $(INSTTOOL) -d $(DESTDIR)/$(INSTALL)/bin
     $(INSTTOOL) -m 755 bin/doxygen    $(DESTDIR)/$(INSTALL)/bin
diff -up doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf.config doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf
--- doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf.config    2008-12-06 14:16:20.000000000 +0100
+++ doxygen-1.7.1/tmake/lib/linux-g++/tmake.conf    2010-07-19 12:03:53.000000000 +0200
@@ -11,7 +11,7 @@ TMAKE_CC        = gcc
 TMAKE_CFLAGS        = -pipe
 TMAKE_CFLAGS_WARN_ON    = -Wall -W -fno-exceptions
 TMAKE_CFLAGS_WARN_OFF    =
-TMAKE_CFLAGS_RELEASE    = -O2
+TMAKE_CFLAGS_RELEASE    = $(RPM_OPT_FLAGS)
 TMAKE_CFLAGS_DEBUG    = -g
 TMAKE_CFLAGS_SHLIB    = -fPIC
 TMAKE_CFLAGS_YACC    = -Wno-unused -Wno-parentheses
@@ -27,12 +27,12 @@ TMAKE_CXXFLAGS_YACC    = $$TMAKE_CFLAGS_YAC
 TMAKE_INCDIR        =
 TMAKE_LIBDIR        =
-TMAKE_INCDIR_X11    = /usr/X11R6/include
-TMAKE_LIBDIR_X11    = /usr/X11R6/lib
-TMAKE_INCDIR_QT        = $(QTDIR)/include
-TMAKE_LIBDIR_QT        = $(QTDIR)/lib
-TMAKE_INCDIR_OPENGL    = /usr/X11R6/include
-TMAKE_LIBDIR_OPENGL    = /usr/X11R6/lib
+TMAKE_INCDIR_X11    =
+TMAKE_LIBDIR_X11    =
+TMAKE_INCDIR_QT        =
+TMAKE_LIBDIR_QT        =
+TMAKE_INCDIR_OPENGL    =
+TMAKE_LIBDIR_OPENGL    =
 TMAKE_LINK        = g++
 TMAKE_LINK_SHLIB    = g++
SOURCES/doxygen-1.7.5-timestamp.patch
New file
@@ -0,0 +1,63 @@
diff -up doxygen-1.7.5/src/configoptions.cpp.timestamp doxygen-1.7.5/src/configoptions.cpp
--- doxygen-1.7.5/src/configoptions.cpp.timestamp    2011-08-03 15:54:50.000000000 +0200
+++ doxygen-1.7.5/src/configoptions.cpp    2011-08-23 12:55:56.000000000 +0200
@@ -1173,6 +1173,14 @@ void addConfigOptions(Config *cfg)
   cs->setWidgetType(ConfigString::File);
   cs->addDependency("GENERATE_HTML");
   //----
+  cb = cfg->addBool(
+                 "HTML_TIMESTAMP",
+                 "If the HTML_TIMESTAMP tag is set to YES then the generated HTML\n"
+                 "documentation will contain the timesstamp.",
+                 FALSE
+                );
+  cb->addDependency("GENERATE_HTML");
+  //----
   cs = cfg->addString(
                  "HTML_STYLESHEET",
                  "The HTML_STYLESHEET tag can be used to specify a user-defined cascading\n"
diff -up doxygen-1.7.5/src/config.xml.timestamp doxygen-1.7.5/src/config.xml
--- doxygen-1.7.5/src/config.xml.timestamp    2011-08-03 15:54:48.000000000 +0200
+++ doxygen-1.7.5/src/config.xml    2011-08-23 12:55:56.000000000 +0200
@@ -819,6 +819,11 @@ The HTML_FOOTER tag can be used to speci
 each generated HTML page. If it is left blank doxygen will generate a
 standard footer.
 ' defval='' depends='GENERATE_HTML'/>
+    <option type='bool' id='HTML_TIMESTAMP' docs='
+If the HTML_TIMESTAMP tag is set to YES then the generated HTML
+documentation will contain the timesstamp.
+' defval='' depends='GENERATE_HTML'/>
+
     <option type='string' id='HTML_STYLESHEET' format='file' docs='
 The HTML_STYLESHEET tag can be used to specify a user-defined cascading
 style sheet that is used by each HTML page. It can be used to
diff -up doxygen-1.7.5/src/htmlgen.cpp.timestamp doxygen-1.7.5/src/htmlgen.cpp
--- doxygen-1.7.5/src/htmlgen.cpp.timestamp    2011-08-01 22:10:17.000000000 +0200
+++ doxygen-1.7.5/src/htmlgen.cpp    2011-08-23 13:01:16.000000000 +0200
@@ -88,7 +88,7 @@ static const char svgpan_script[]=
 static QCString g_header;
 static QCString g_footer;
-
+static bool timestamp=false;
 //------------------------- Pictures for the Tabs ------------------------
 // active
@@ -1072,6 +1072,8 @@ void HtmlGenerator::init()
   {
     g_footer = defaultHtmlFooter;
   }
+  if (Config_getBool("HTML_TIMESTAMP"))
+    timestamp=true;
   createSubDirs(d);
   QCString fileName=dname+"/tabs.css";
@@ -1285,7 +1287,7 @@ QCString HtmlGenerator::writeLogoAsStrin
   if (timeStamp)
   {
     result += theTranslator->trGeneratedAt(
-               dateToString(TRUE),
+               dateToString(timestamp),
                Config_getString("PROJECT_NAME")
               );
   }
SOURCES/doxygen-1.8.0-rh856725.patch
New file
@@ -0,0 +1,15 @@
--- doxygen-1.8.0/src/configgen.py    2012-01-29 10:12:54.000000000 -0500
+++ doxygen-1.8.0/src/configgen.py    2012-08-07 17:38:54.751696536 -0400
@@ -34,8 +34,10 @@
         if type=='bool':
             if len(adefval)>0:
             enabled = adefval
-        else:
-            enabled = "TRUE" if defval=='1' else "FALSE"
+        elif defval=='1':
+            enabled = "TRUE"
+        else:
+            enabled = "FALSE"
         print "  cb = cfg->addBool("
         print "                 \"%s\"," % (name)
         print "                 \"%s\"," % (docC)
SOURCES/gcc7-Wno-format-security.patch
New file
@@ -0,0 +1,27 @@
2017-02-25  Jakub Jelinek  <jakub@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
SOURCES/gcc7-aarch64-async-unw-tables.patch
New file
@@ -0,0 +1,35 @@
2014-04-07  Richard Henderson  <rth@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.
SOURCES/gcc7-alt-compat-test.patch
New file
@@ -0,0 +1,49 @@
--- gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c.jj    2011-01-03 06:50:42.000000000 -0500
+++ gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c    2011-02-18 06:28:53.858200077 -0500
@@ -1501,6 +1501,8 @@ generate_random_tests (enum FEATURE feat
   int i, r;
   if (len > 'z' - 'a' + 1)
     abort ();
+  if (getenv ("ALT_CXX_UNDER_TEST") != NULL)
+    features &= ~FEATURE_VECTOR;
   memset (e, 0, sizeof (e));
   r = generate_random ();
   if ((r & 7) == 0)
--- gcc/testsuite/g++.dg/compat/compat.exp.jj    2011-01-03 06:50:42.000000000 -0500
+++ gcc/testsuite/g++.dg/compat/compat.exp    2011-02-18 06:30:54.248200398 -0500
@@ -116,7 +116,12 @@ if [info exists ALT_CXX_UNDER_TEST] then
 }
 # Main loop.
-foreach src [lsort [find $srcdir/$subdir *_main.C]] {
+set tests [lsort [find $srcdir/$subdir *_main.C]]
+if { $use_alt != 0 } then {
+    set tests [prune $tests $srcdir/$subdir/decimal/*]
+}
+
+foreach src $tests {
     # If we're only testing specific files and this isn't one of them, skip it.
     if ![runtest_file_p $runtests $src] then {
     continue
--- gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c.jj    2011-01-03 06:49:58.000000000 -0500
+++ gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c    2011-02-18 06:27:54.922262671 -0500
@@ -1912,6 +1912,8 @@ generate_random_tests (enum FEATURE feat
   int i, r;
   if (len > 'z' - 'a' + 1)
     abort ();
+  if (getenv ("ALT_CC_UNDER_TEST") != NULL)
+    features &= ~FEATURE_VECTOR;
   memset (e, 0, sizeof (e));
   r = generate_random ();
   if ((r & 7) == 0)
--- gcc/testsuite/lib/c-compat.exp.jj    2011-01-03 06:48:38.000000000 -0500
+++ gcc/testsuite/lib/c-compat.exp    2011-02-18 06:38:19.124265008 -0500
@@ -75,7 +75,7 @@ proc compat_setup_dfp { } {
     # If there is an alternate compiler, does it support decimal float types?
     if { $compat_have_dfp == 1 && $compat_use_alt == 1 && $compat_same_alt == 0 } {
     compat-use-alt-compiler
-    set compat_have_dfp [check_effective_target_dfprt_nocache]
+    set compat_have_dfp 0
     compat-use-tst-compiler
     verbose "compat_have_dfp for alt compiler: $compat_have_dfp" 2
     }
SOURCES/gcc7-foffload-default.patch
New file
@@ -0,0 +1,117 @@
2017-01-20  Jakub Jelinek  <jakub@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,
SOURCES/gcc7-hack.patch
New file
@@ -0,0 +1,135 @@
--- 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
@@ -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;
SOURCES/gcc7-i386-libgomp.patch
New file
@@ -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
     ;;
SOURCES/gcc7-isl-dl.patch
New file
@@ -0,0 +1,711 @@
--- 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
@@ -37,6 +37,586 @@ along with GCC; see the file COPYING3.
 #include <isl/schedule.h>
 #include <isl/ast_build.h>
 #include <isl/schedule_node.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);
+
+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)
 typedef struct poly_dr *poly_dr_p;
@@ -458,5 +1038,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
@@ -55,6 +55,35 @@ along with GCC; see the file COPYING3.
 #include "tree-vectorizer.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
@@ -299,6 +328,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))
@@ -342,6 +380,14 @@ graphite_transform_loops (void)
   isl_ctx_free (ctx);
 }
+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))
SOURCES/gcc7-isl-dl2.patch
New file
@@ -0,0 +1,71 @@
2011-04-04  Jakub Jelinek  <jakub@redhat.com>
    * toplev.c (toplev_main_argv): New variable.
    (toplev_main): Initialize it.
    * graphite.c (init_isl_pointers): Load libisl.so.13 from gcc's private
    directory.
--- gcc/toplev.c.jj    2008-12-09 23:59:10.000000000 +0100
+++ gcc/toplev.c    2009-01-27 14:33:52.000000000 +0100
@@ -154,6 +154,8 @@ static bool no_backend;
 /* Length of line when printing switch values.  */
 #define MAX_LINE 75
+const char **toplev_main_argv;
+
 /* Decoded options, and number of such options.  */
 struct cl_decoded_option *save_decoded_options;
 unsigned int save_decoded_options_count;
@@ -2126,6 +2128,8 @@ toplev::main (int argc, char **argv)
   expandargv (&argc, &argv);
+  toplev_main_argv = CONST_CAST2 (const char **, char **, argv);
+
   /* Initialization of GCC's environment, and diagnostics.  */
   general_init (argv[0], m_init_signals);
--- gcc/graphite.c.jj    2010-12-01 10:24:32.000000000 -0500
+++ gcc/graphite.c    2010-12-01 11:46:07.832118193 -0500
@@ -60,11 +60,39 @@ __typeof (isl_pointers__) isl_pointers__
 static bool
 init_isl_pointers (void)
 {
-  void *h;
+  void *h = NULL;
+  extern const char **toplev_main_argv;
+  char *buf, *p;
+  size_t len;
   if (isl_pointers__.inited)
     return isl_pointers__.h != NULL;
-  h = dlopen ("libisl.so.15", RTLD_LAZY);
+  len = progname - toplev_main_argv[0];
+  buf = XALLOCAVAR (char, len + sizeof "libisl.so.15");
+  memcpy (buf, toplev_main_argv[0], len);
+  strcpy (buf + len, "libisl.so.15");
+  len += sizeof "libisl.so.15";
+  p = strstr (buf, "/libexec/");
+  if (p != NULL)
+    {
+      while (1)
+    {
+      char *q = strstr (p + 8, "/libexec/");
+      if (q == NULL)
+        break;
+      p = q;
+    }
+      memmove (p + 4, p + 8, len - (p + 8 - buf));
+      h = dlopen (buf, RTLD_LAZY);
+      if (h == NULL)
+    {
+      len = progname - toplev_main_argv[0];
+      memcpy (buf, toplev_main_argv[0], len);
+      strcpy (buf + len, "libisl.so.15");
+    }
+    }
+  if (h == NULL)
+    h = dlopen (buf, RTLD_LAZY);
   isl_pointers__.h = h;
   if (h == NULL)
     return false;
SOURCES/gcc7-libgomp-omp_h-multilib.patch
New file
@@ -0,0 +1,17 @@
2008-06-09  Jakub Jelinek  <jakub@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
SOURCES/gcc7-libstdc++-compat.patch
New file
Diff too large
SOURCES/gcc7-libstdc++-docs.patch
New file
@@ -0,0 +1,24 @@
--- 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 7.2.1
+    </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 7.2.1 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.html" target="_top">
SOURCES/gcc7-libstdc++44-xfail.patch
New file
@@ -0,0 +1,190 @@
--- libstdc++-v3/testsuite/22_locale/locale/cons/40184.cc.jj    2014-04-11 14:52:06.733884798 +0200
+++ libstdc++-v3/testsuite/22_locale/locale/cons/40184.cc    2014-05-10 12:29:51.779887325 +0200
@@ -1,4 +1,6 @@
 // { dg-require-namedlocale "ja_JP.eucjp" }
+// pr40184 fix not backported to base (locales with broken facets)
+// { dg-do run { xfail *-*-* } }
 // Copyright (C) 2009-2014 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/22_locale/time_get/get_date/char/26701.cc.jj    2014-04-11 14:52:06.680885075 +0200
+++ libstdc++-v3/testsuite/22_locale/time_get/get_date/char/26701.cc    2014-05-10 12:29:51.792886917 +0200
@@ -1,4 +1,6 @@
 // { dg-require-namedlocale "en_GB" }
+//  pr26701 fix not backported to base (parsing of en_GB date)
+// { dg-do run { xfail *-*-* } }
 // 2010-01-06  Paolo Carlini  <paolo.carlini@oracle.com>
--- libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/26701.cc.jj    2014-04-11 14:52:06.674885106 +0200
+++ libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/26701.cc    2014-05-10 12:29:51.792886917 +0200
@@ -1,4 +1,6 @@
 // { dg-require-namedlocale "en_GB" }
+//  pr26701 fix not backported to base (parsing of en_GB date)
+// { dg-do run { xfail *-*-* } }
 // 2010-01-06  Paolo Carlini  <paolo.carlini@oracle.com>
--- libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc.jj    2014-04-11 14:52:06.645885257 +0200
+++ libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc    2014-05-10 12:29:51.802886712 +0200
@@ -1,4 +1,6 @@
 // { dg-require-namedlocale "ru_RU.ISO-8859-5" }
+//  pr38081 fix not backported to base (parsing weekday names)
+// { dg-do run { xfail *-*-* } }
 // Copyright (C) 2010-2014 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc.jj    2014-04-11 14:52:06.646885252 +0200
+++ libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc    2014-05-10 12:29:51.802886712 +0200
@@ -1,4 +1,6 @@
 // { dg-require-namedlocale "ru_RU.UTF8" }
+// pr38081 fix not backported to base (parsing weekday names)
+// { dg-do run { xfail *-*-* } }
 // 2010-01-05  Paolo Carlini  <paolo.carlini@oracle.com>
--- libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4.cc.jj    2014-04-11 14:52:04.949894106 +0200
+++ libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4.cc    2014-05-10 12:29:51.807886709 +0200
@@ -1,4 +1,6 @@
 // { dg-require-fileio "" }
+// pr45628 fix not backported to base (seek 0 shouldn't flush)
+// { dg-do run { xfail *-*-* } }
 // Copyright (C) 2010-2014 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc.jj    2014-05-10 12:29:51.808886705 +0200
+++ libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc    2014-05-10 12:31:51.652261219 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr45628 fix not backported to base (seek 0 shouldn't flush)
+
 // Copyright (C) 2010-2014 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
--- libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc.jj    2014-04-11 14:52:04.941894148 +0200
+++ libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc    2014-05-10 12:29:51.808886705 +0200
@@ -1,4 +1,6 @@
 // { dg-require-fileio "" }
+// pr45628 fix not backported to base (seek 0 should not flush)
+// { dg-do run { xfail *-*-* } }
 // Copyright (C) 2010-2014 Free Software Foundation, Inc.
 //
--- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc.jj    2014-04-11 14:52:04.771895035 +0200
+++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc    2014-05-10 12:29:51.819886643 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// dr696 fix not backported to base (handling of overflow when reading number)
+
 // 1999-04-12 bkoz
 // Copyright (C) 1999-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc.jj    2014-04-11 14:52:04.770895040 +0200
+++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc    2014-05-10 12:29:51.819886643 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// dr696 fix not backported to base (handling of overflow when reading number)
+
 // 2009-07-15  Paolo Carlini  <paolo.carlini@oracle.com>
 //
 // Copyright (C) 2009-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc.jj    2014-05-10 12:29:51.829886586 +0200
+++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc    2014-05-10 12:32:23.160099254 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// dr696 fix not backported to base (handling of overflow when reading number)
+
 // Copyright (C) 2004-2014 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
--- libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc.jj    2014-04-11 14:52:04.762895082 +0200
+++ libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc    2014-05-10 12:29:51.829886586 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// dr696 fix not backported to base (handling of overflow when reading number)
+
 // 2009-07-15  Paolo Carlini  <paolo.carlini@oracle.com>
 //
 // Copyright (C) 2009-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc.jj    2014-04-11 14:52:04.735895223 +0200
+++ libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc    2014-05-10 12:29:51.836886549 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr26211 fix not backported to base (tellg/seekg should construct a sentry)
+
 // 2010-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
 // Copyright (C) 2010-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc.jj    2014-04-11 14:52:04.731895243 +0200
+++ libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc    2014-05-10 12:29:51.836886549 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr26211 fix not backported to base (tellg/seekg should construct a sentry)
+
 // 2010-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
 // Copyright (C) 2010-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc.jj    2014-04-11 14:52:04.779894993 +0200
+++ libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc    2014-05-10 12:29:51.836886549 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr26211 fix not backported to base (tellg/seekg should construct a sentry)
+
 // 2010-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
 // Copyright (C) 2010-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc.jj    2014-04-11 14:52:04.775895014 +0200
+++ libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc    2014-05-10 12:29:51.837886543 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr26211 fix not backported to base (tellg/seekg should construct a sentry)
+
 // 2010-11-18  Paolo Carlini  <paolo.carlini@oracle.com>
 // Copyright (C) 2010-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/27_io/objects/char/41037.cc.jj    2014-05-10 12:29:51.848886483 +0200
+++ libstdc++-v3/testsuite/27_io/objects/char/41037.cc    2014-05-10 12:30:52.480567953 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr41037 fix not backported to base (flags on cerr)
+
 // Copyright (C) 2009-2014 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
--- libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc.jj    2014-05-10 12:29:51.856886441 +0200
+++ libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc    2014-05-10 12:31:20.274421862 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr26211 fix not backported to base (tellg/seekg should construct a sentry)
+
 // Copyright (C) 2009-2014 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
--- libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc.jj    2014-04-11 14:52:05.388891816 +0200
+++ libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc    2014-05-10 12:29:51.868886376 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr42670 fix not backported to base (partial demangling of global ctor fn)
+
 // 2003-02-26  Carlo Wood  <carlo@alinoe.com>
 // Copyright (C) 2003-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc.jj    2014-04-11 14:52:05.387891821 +0200
+++ libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc    2014-05-10 12:29:51.868886376 +0200
@@ -1,3 +1,6 @@
+// { dg-do run { xfail *-*-* } }
+// pr37376 fix not backported to base ((42) + 2 changed to (42)+(2))
+
 // 2003-11-07  Carlo Wood  <carlo@alinoe.com>
 // Copyright (C) 2003-2014 Free Software Foundation, Inc.
--- libstdc++-v3/testsuite/libstdc++-abi/abi.exp.jj    2014-04-11 14:52:06.793884485 +0200
+++ libstdc++-v3/testsuite/libstdc++-abi/abi.exp    2014-05-10 12:29:51.868886376 +0200
@@ -61,4 +61,7 @@ remote_download "target" "current_symbol
 set result [${tool}_load "./abi_check" \
         [list "--check-verbose" "current_symbols.txt" \
              "baseline_symbols.txt"]]
+# This is an artifact of running the current testsuite against the old
+# system libstdc++
+setup_xfail *-*-*
 [lindex $result 0] "libstdc++-abi/abi_check"
SOURCES/gcc7-libtool-no-rpath.patch
New file
@@ -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
SOURCES/gcc7-no-add-needed.patch
New file
@@ -0,0 +1,50 @@
2010-02-08  Roland McGrath  <roland@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__ \
SOURCES/gcc7-ppc32-retaddr.patch
New file
@@ -0,0 +1,87 @@
2005-11-28  Jakub Jelinek  <jakub@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;
+}
SOURCES/gcc7-rh1118870.patch
New file
@@ -0,0 +1,20 @@
2014-07-23  Jonathan Wakely  <jwakely@redhat.com>
    * testsuite/30_threads/condition_variable_any/rh1118870.cc: New test.
--- libstdc++-v3/testsuite/30_threads/condition_variable_any/rh1118870.cc
+++ libstdc++-v3/testsuite/30_threads/condition_variable_any/rh1118870.cc
@@ -0,0 +1,13 @@
+// { dg-options " -std=gnu++11 -pthread" }
+#include <condition_variable>
+#include <cstring>
+
+int main()
+{
+  const size_t sz = sizeof(std::condition_variable_any);
+  char garbage[sz];
+  memset(garbage, 0xff, sz);
+  auto cond = new ((void*)garbage) std::condition_variable_any();
+  cond->notify_all();
+  cond->~condition_variable_any();
+}
SOURCES/gcc7-sparc-config-detection.patch
New file
@@ -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
SPECS/gcc.spec
New file
@@ -0,0 +1,2546 @@
%{?scl:%global __strip %%{_scl_root}/usr/bin/strip}
%{?scl:%global __objdump %%{_scl_root}/usr/bin/objdump}
%{?scl:%scl_package gcc}
%global DATE 20170829
%global SVNREV 251415
%global gcc_version 7.2.1
%global gcc_major 7
# 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 1
%global mpc_version 0.8.1
%global isl_version 0.16.1
%global graphviz_version 2.26.0
%global doxygen_version 1.8.0
%global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} x86_64 ia64
%global build_libquadmath 1
%else
%global build_libquadmath 0
%endif
%global build_fortran 1
%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64
%global build_libitm 1
%else
%global build_libitm 0
%endif
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le 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
%global build_libcilkrts 1
%else
%global build_libcilkrts 0
%endif
%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 ppc64le s390 s390x %{arm} aarch64
%global build_libatomic 1
%else
%global build_libatomic 0
%endif
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
%global attr_ifunc 1
%else
%global attr_ifunc 0
%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 s390x
%global multilib_32_arch s390
%endif
%ifarch sparc64
%global multilib_32_arch sparcv9
%endif
%ifarch ppc64
%global multilib_32_arch ppc
%endif
%ifarch x86_64
%global multilib_32_arch i686
%endif
Summary: GCC version 7
Name: %{?scl_prefix}gcc
#Name: %{?scl_prefix}gcc%{!?scl:7}
Version: %{gcc_version}
Release: %{gcc_release}%{?dist}
# libgcc, libgfortran, libmudflap, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Group: Development/Languages
# 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-7-branch@%{SVNREV} gcc-%{version}-%{DATE}
# tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
Source0: gcc-%{version}-%{DATE}.tar.bz2
Source1: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.xz
Source2: http://www.multiprecision.org/mpc/download/mpc-%{mpc_version}.tar.gz
Source3: ftp://ftp.stack.nl/pub/users/dimitri/doxygen-%{doxygen_version}.src.tar.gz
URL: http://gcc.gnu.org
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# 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
# Need binutils which support .weakref >= 2.16.91.0.3-1
# 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 .cfi_sections >= 2.19.51.0.14-33
BuildRequires: binutils >= 2.19.51.0.14-33
# While gcc doesn't include statically linked binaries, during testing
# -static is used several times.
BuildRequires: glibc-static
%if 0%{?scl:1}
BuildRequires: %{?scl_prefix}binutils >= 2.22.52.0.1
# For testing
BuildRequires: %{?scl_prefix}gdb >= 7.4.50
%endif
BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils, gcc-gfortran
BuildRequires: /usr/bin/pod2man
%if 0%{?rhel} >= 7
BuildRequires: texinfo-tex
%endif
#BuildRequires: systemtap-sdt-devel >= 1.3
# 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 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
# Make sure glibc supports TFmode long double
BuildRequires: 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
%endif
# Need .eh_frame ld optimizations
# Need proper visibility support
# Need -pie support
# Need --as-needed/--no-as-needed support
# On ppc64, need omit dot symbols support and --non-overlapping-opd
# Need binutils that owns /usr/bin/c++filt
# Need binutils that support .weakref
# Need binutils that supports --hash-style=gnu
# Need binutils that support mffgpr/mftgpr
# 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 .cfi_sections >= 2.19.51.0.14-33
%if 0%{?scl:1}
Requires: %{?scl_prefix}binutils >= 2.22.52.0.1
%else
Requires: binutils >= 2.19.51.0.14-33
%endif
# Make sure gdb will understand DW_FORM_strp
Conflicts: gdb < 5.1-2
Requires: glibc-devel >= 2.2.90-12
%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
# Make sure glibc supports TFmode long double
Requires: glibc >= 2.3.90-35
%endif
Requires: libgcc >= 4.1.2-43
Requires: libgomp >= 4.4.4-13
BuildRequires: gmp-devel >= 4.1.2-8
BuildRequires: mpfr-devel >= 2.2.1
%if 0%{?rhel} >= 7
BuildRequires: libmpc-devel >= 0.8.1
%endif
%if %{build_libstdcxx_docs}
BuildRequires: libxml2
BuildRequires: graphviz
%if 0%{?rhel} < 7
# doxygen BRs
BuildRequires: perl
BuildRequires: texlive-dvips, texlive-utils, texlive-latex
BuildRequires: ghostscript
%endif
%if 0%{?rhel} >= 7
BuildRequires: doxygen >= 1.7.1
BuildRequires: dblatex, texlive-collection-latex, docbook5-style-xsl
%endif
%endif
%{?scl:Requires:%scl_runtime}
AutoReq: true
AutoProv: false
%ifarch sparc64 ppc64 ppc64le s390x x86_64 ia64
Provides: liblto_plugin.so.0()(64bit)
%else
Provides: liblto_plugin.so.0
%endif
%global oformat %{nil}
%global oformat2 %{nil}
%ifarch %{ix86}
%global oformat OUTPUT_FORMAT(elf32-i386)
%endif
%ifarch x86_64
%global oformat OUTPUT_FORMAT(elf64-x86-64)
%global oformat2 OUTPUT_FORMAT(elf32-i386)
%endif
%ifarch ppc
%global oformat OUTPUT_FORMAT(elf32-powerpc)
%global oformat2 OUTPUT_FORMAT(elf64-powerpc)
%endif
%ifarch ppc64
%global oformat OUTPUT_FORMAT(elf64-powerpc)
%global oformat2 OUTPUT_FORMAT(elf32-powerpc)
%endif
%ifarch s390
%global oformat OUTPUT_FORMAT(elf32-s390)
%endif
%ifarch s390x
%global oformat OUTPUT_FORMAT(elf64-s390)
%global oformat2 OUTPUT_FORMAT(elf32-s390)
%endif
%ifarch ia64
%global oformat OUTPUT_FORMAT(elf64-ia64-little)
%endif
%ifarch ppc64le
%global oformat OUTPUT_FORMAT(elf64-powerpcle)
%endif
%ifarch aarch64
%global oformat OUTPUT_FORMAT(elf64-littleaarch64)
%endif
Patch0: gcc7-hack.patch
Patch1: gcc7-ppc32-retaddr.patch
Patch2: gcc7-i386-libgomp.patch
Patch3: gcc7-sparc-config-detection.patch
Patch4: gcc7-libgomp-omp_h-multilib.patch
Patch5: gcc7-libtool-no-rpath.patch
Patch6: gcc7-isl-dl.patch
Patch7: gcc7-libstdc++-docs.patch
Patch8: gcc7-no-add-needed.patch
Patch9: gcc7-aarch64-async-unw-tables.patch
Patch10: gcc7-foffload-default.patch
Patch11: gcc7-Wno-format-security.patch
Patch1000: gcc7-libstdc++-compat.patch
Patch1001: gcc7-alt-compat-test.patch
Patch1002: gcc7-libstdc++44-xfail.patch
Patch1003: gcc7-rh1118870.patch
Patch1004: gcc7-isl-dl2.patch
Patch2001: doxygen-1.7.1-config.patch
Patch2002: doxygen-1.7.5-timestamp.patch
Patch2003: doxygen-1.8.0-rh856725.patch
%if 0%{?rhel} >= 7
%global nonsharedver 48
%else
%global nonsharedver 44
%endif
%if 0%{?scl:1}
%global _gnu %{nil}
%else
%global _gnu 7E
%endif
%ifarch sparcv9
%global gcc_target_platform sparc64-%{_vendor}-%{_target_os}%{?_gnu}
%endif
%ifarch ppc
%global gcc_target_platform ppc64-%{_vendor}-%{_target_os}%{?_gnu}
%endif
%ifnarch sparcv9 ppc
%global gcc_target_platform %{_target_platform}
%endif
%description
The %{?scl_prefix}gcc%{!?scl:5} package contains the GNU Compiler Collection version 7.
%package c++
Summary: C++ support for GCC version 7
Group: Development/Languages
Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
%if 0%{?rhel} >= 7
Requires: libstdc++
%else
Requires: libstdc++ >= 4.4.4-13
%endif
Requires: %{?scl_prefix}libstdc++%{!?scl:5}-devel = %{version}-%{release}
Autoreq: true
Autoprov: true
%description c++
This package adds C++ support to the GNU Compiler Collection
version 7.  It includes support for most of the current C++ specification
and a lot of support for the upcoming C++ specification.
%package -n %{?scl_prefix}libstdc++%{!?scl:5}-devel
Summary: Header files and libraries for C++ development
Group: Development/Libraries
%if 0%{?rhel} >= 7
Requires: libstdc++
%else
Requires: libstdc++ >= 4.4.4-13
%endif
Requires: libstdc++%{?_isa}
Autoreq: true
Autoprov: true
%description -n %{?scl_prefix}libstdc++%{!?scl:5}-devel
This is the GNU implementation of the standard C++ libraries.  This
package includes the header files and libraries needed for C++
development. This includes rewritten implementation of STL.
%package -n %{?scl_prefix}libstdc++%{!?scl:5}-docs
Summary: Documentation for the GNU standard C++ library
Group: Development/Libraries
Autoreq: true
%description -n %{?scl_prefix}libstdc++%{!?scl:5}-docs
Manual, doxygen generated API information and Frequently Asked Questions
for the GNU standard C++ library.
%package gfortran
Summary: Fortran support for GCC 7
Group: Development/Languages
Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
Requires: libgfortran4 >= 7.1.1-2
%if %{build_libquadmath}
%if 0%{!?scl:1}
Requires: libquadmath
%endif
Requires: %{?scl_prefix}libquadmath-devel = %{version}-%{release}
%endif
Autoreq: true
Autoprov: true
%description gfortran
The %{?scl_prefix}gcc%{!?scl:5}-gfortran package provides support for compiling Fortran
programs with the GNU Compiler Collection.
%package gdb-plugin
Summary: GCC 7 plugin for GDB
Group: Development/Debuggers
Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
%description gdb-plugin
This package contains GCC 7 plugin for GDB C expression evaluation.
%package -n %{?scl_prefix}libgccjit
Summary: Library for embedding GCC inside programs and libraries
Group: System Environment/Libraries
Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
%description -n %{?scl_prefix}libgccjit
This package contains shared library with GCC 7 JIT front end.
%package -n %{?scl_prefix}libgccjit-devel
Summary: Support for embedding GCC inside programs and libraries
Group: Development/Libraries
Requires: %{?scl_prefix}libgccjit = %{version}-%{release}
Requires: %{?scl_prefix}libgccjit-docs = %{version}-%{release}
%description -n %{?scl_prefix}libgccjit-devel
This package contains header files for GCC 7 JIT front end.
%package -n %{?scl_prefix}libgccjit-docs
Summary: Documentation for embedding GCC inside programs and libraries
Group: Development/Libraries
BuildRequires: python-sphinx
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n %{?scl_prefix}libgccjit-docs
This package contains documentation for GCC 7 JIT front end.
%package -n %{?scl_prefix}libquadmath
Summary: GCC 7 __float128 shared support library
Group: System Environment/Libraries
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n %{?scl_prefix}libquadmath
This package contains GCC shared support library which is needed
for __float128 math support and for Fortran REAL*16 support.
%package -n %{?scl_prefix}libquadmath-devel
Summary: GCC 7 __float128 support
Group: Development/Libraries
%if 0%{!?scl:1}
Requires: %{?scl_prefix}libquadmath = %{version}-%{release}
%else
%if 0%{?rhel} >= 7
Requires: libquadmath
%endif
%endif
Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
%description -n %{?scl_prefix}libquadmath-devel
This package contains headers for building Fortran programs using
REAL*16 and programs using __float128 math.
%package -n %{?scl_prefix}libitm-devel
Summary: The GNU Transactional Memory support
Group: Development/Libraries
Requires: libitm >= 4.7.0-1
Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
%description -n %{?scl_prefix}libitm-devel
This package contains headers and support files for the
GNU Transactional Memory library.
%package plugin-devel
Summary: Support for compiling GCC plugins
Group: Development/Languages
Requires: %{?scl_prefix}gcc%{!?scl:5} = %{version}-%{release}
Requires: gmp-devel >= 4.1.2-8
Requires: mpfr-devel >= 2.2.1
%if 0%{?rhel} >= 7
Requires: libmpc-devel >= 0.8.1
%endif
%description plugin-devel
This package contains header files and other support files
for compiling GCC 7 plugins.  The GCC plugin ABI is currently
not stable, so plugins must be rebuilt any time GCC is updated.
%package -n libatomic
Summary: The GNU Atomic library
Group: System Environment/Libraries
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n libatomic
This package contains the GNU Atomic library
which is a GCC support runtime library for atomic operations not supported
by hardware.
%package -n %{?scl_prefix}libatomic-devel
Summary: The GNU Atomic static library
Group: Development/Libraries
Requires: libatomic >= 4.8.0
%description -n %{?scl_prefix}libatomic-devel
This package contains GNU Atomic static libraries.
%package -n libasan4
Summary: The Address Sanitizer runtime library from GCC 7
Group: System Environment/Libraries
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n libasan4
This package contains the Address Sanitizer library from GCC 7
which is used for -fsanitize=address instrumented programs.
%package -n %{?scl_prefix}libasan-devel
Summary: The Address Sanitizer static library
Group: Development/Libraries
Requires: libasan4 >= 7.1.1
%description -n %{?scl_prefix}libasan-devel
This package contains Address Sanitizer static runtime library.
%package -n libtsan
Summary: The Thread Sanitizer runtime library
Group: System Environment/Libraries
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n libtsan
This package contains the Thread Sanitizer library
which is used for -fsanitize=thread instrumented programs.
%package -n %{?scl_prefix}libtsan-devel
Summary: The Thread Sanitizer static library
Group: Development/Libraries
Requires: libtsan >= 5.1.1
%description -n %{?scl_prefix}libtsan-devel
This package contains Thread Sanitizer static runtime library.
%package -n libubsan
Summary: The Undefined Behavior Sanitizer runtime library
Group: System Environment/Libraries
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n libubsan
This package contains the Undefined Behavior Sanitizer library
which is used for -fsanitize=undefined instrumented programs.
%package -n %{?scl_prefix}libubsan-devel
Summary: The Undefined Behavior Sanitizer static library
Group: Development/Libraries
Requires: libubsan >= 5.1.1
%description -n %{?scl_prefix}libubsan-devel
This package contains Undefined behavior Sanitizer static runtime library.
%package -n liblsan
Summary: The Leak Sanitizer runtime library
Group: System Environment/Libraries
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n liblsan
This package contains the Leak Sanitizer library
which is used for -fsanitize=leak instrumented programs.
%package -n %{?scl_prefix}liblsan-devel
Summary: The Leak Sanitizer static library
Group: Development/Libraries
Requires: liblsan >= 5.1.1
%description -n %{?scl_prefix}liblsan-devel
This package contains Leak Sanitizer static runtime library.
%package -n libcilkrts
Summary: The Cilk+ runtime library
Group: System Environment/Libraries
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n libcilkrts
This package contains the Cilk+ runtime library.
%package -n %{?scl_prefix}libcilkrts-devel
Summary: The Cilk+ static runtime library
Group: Development/Libraries
Requires: libcilkrts >= 5.1.1
%description -n %{?scl_prefix}libcilkrts-devel
This package contains the Cilk+ static runtime library.
%package -n libmpx
Summary: The Memory Protection Extensions runtime libraries
Group: System Environment/Libraries
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
%description -n libmpx
This package contains the Memory Protection Extensions runtime libraries
which is used for -fcheck-pointer-bounds -mmpx instrumented programs.
%package -n %{?scl_prefix}libmpx-devel
Summary: The Memory Protection Extensions static libraries
Group: Development/Libraries
Requires: libmpx >= 5.1.1
%description -n %{?scl_prefix}libmpx-devel
This package contains the Memory Protection Extensions static runtime libraries.
%prep
%if 0%{?rhel} >= 7
%setup -q -n gcc-%{version}-%{DATE} -a 1
%else
%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3
%endif
%patch0 -p0 -b .hack~
%patch1 -p0 -b .ppc32-retaddr~
%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}
%patch6 -p0 -b .isl-dl~
%endif
%if %{build_libstdcxx_docs}
%patch7 -p0 -b .libstdc++-docs~
%endif
%patch8 -p0 -b .no-add-needed~
%patch9 -p0 -b .aarch64-async-unw-tables~
%patch10 -p0 -b .foffload-default~
%patch11 -p0 -b .Wno-format-security~
%patch1000 -p0 -b .libstdc++-compat~
%ifarch %{ix86} x86_64
%if 0%{?rhel} < 7
# On i?86/x86_64 there are some incompatibilities in _Decimal* as well as
# aggregates containing larger vector passing.
%patch1001 -p0 -b .alt-compat-test~
%endif
%endif
%if 0%{?rhel} == 6
# Fix this up
#%patch1002 -p0 -b .libstdc++44-xfail~
%endif
%patch1003 -p0 -b .rh1118870~
%patch1004 -p0 -b .isl-dl2~
%if %{build_libstdcxx_docs}
%if 0%{?rhel} < 7
cd doxygen-%{doxygen_version}
%patch2001 -p1 -b .config~
%patch2002 -p1 -b .timestamp~
%patch2003 -p1 -b .rh856725~
cd ..
%endif
%endif
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
%if 0%{?rhel} == 6
# Default to -gdwarf-3 rather than -gdwarf-4
sed -i '/UInteger Var(dwarf_version)/s/Init(4)/Init(3)/' gcc/common.opt
sed -i 's/\(may be either 2, 3 or 4; the default version is \)4\./\13./' gcc/doc/invoke.texi
%endif
cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
cp -a libstdc++-v3/config/cpu/i{4,3}86/opt
./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
%build
# Undo the broken autoconf change in recent Fedora versions
export CONFIG_SITE=NONE
rm -fr obj-%{gcc_target_platform}
mkdir obj-%{gcc_target_platform}
cd obj-%{gcc_target_platform}
%if %{build_libstdcxx_docs}
%if 0%{?rhel} < 7
mkdir doxygen-install
pushd ../doxygen-%{doxygen_version}
./configure --prefix `cd ..; pwd`/obj-%{gcc_target_platform}/doxygen-install \
  --shared --release --english-only
make %{?_smp_mflags} all
make install
popd
export PATH=`pwd`/doxygen-install/bin/${PATH:+:${PATH}}
%endif
%endif
%if 0%{?rhel} < 7
mkdir mpc mpc-install
cd mpc
../../mpc-%{mpc_version}/configure --disable-shared \
  CFLAGS="${CFLAGS:-%optflags} -fPIC" CXXFLAGS="${CXXFLAGS:-%optflags} -fPIC" \
  --prefix=`cd ..; pwd`/mpc-install
make %{?_smp_mflags}
make install
cd ..
%endif
%if %{build_isl}
mkdir isl-build isl-install
%ifarch s390 s390x
ISL_FLAG_PIC=-fPIC
%else
ISL_FLAG_PIC=-fpic
%endif
cd isl-build
sed -i 's|libisl|libgcc7privateisl|g' \
  ../../isl-%{isl_version}/Makefile.{am,in}
../../isl-%{isl_version}/configure \
  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 ../isl-install/lib
rm libgcc7privateisl.so{,.15}
mv libgcc7privateisl.so.15.1.1 libisl.so.15
ln -sf libisl.so.15 libisl.so
cd ../..
%endif
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
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/-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
%ifarch %{ix86}
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-march=i.86//g'`
%endif
OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
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 --disable-multilib \
%else
    --enable-multilib \
%endif
    --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
    --enable-gnu-unique-object \
    --enable-linker-build-id --with-gcc-major-version-only \
    --enable-plugin --with-linker-hash-style=gnu \
%if 0%{?scl:1}
    --enable-initfini-array \
%else
%ifnarch ia64
%if 0%{?rhel} >= 7
    --enable-initfini-array \
%else
    --disable-initfini-array \
%endif
%endif
%endif
%if 0%{rhel} < 8
    --with-default-libstdcxx-abi=gcc4-compatible \
%endif
%if %{build_isl}
    --with-isl=`pwd`/isl-install \
%else
    --without-isl \
%endif
%if %{build_libmpx}
    --enable-libmpx \
%else
    --disable-libmpx \
%endif
%if 0%{?rhel} < 7
    --with-mpc=`pwd`/mpc-install \
%endif
%if 0%{?rhel} >= 7
%if %{attr_ifunc}
        --enable-gnu-indirect-function \
%endif
%endif
%ifarch %{arm}
    --disable-sjlj-exceptions \
%endif
%ifarch ppc ppc64 ppc64le ppc64p7
    --enable-secureplt \
%endif
%ifarch sparc sparcv9 sparc64 ppc ppc64 ppc64le ppc64p7 s390 s390x alpha
    --with-long-double-128 \
%endif
%ifarch sparc
    --disable-linux-futex \
%endif
%ifarch sparc64
    --with-cpu=ultrasparc \
%endif
%ifarch sparc sparcv9
    --host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
%endif
%ifarch ppc ppc64 ppc64p7
%if 0%{?rhel} >= 7
    --with-cpu-32=power7 --with-tune-32=power7 --with-cpu-64=power7 --with-tune-64=power7 \
%else
    --with-cpu-32=power4 --with-tune-32=power6 --with-cpu-64=power4 --with-tune-64=power6 \
%endif
%endif
%ifarch ppc64le
%if 0%{?rhel} >= 7
    --with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
%endif
%endif
%ifarch ppc
    --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
%endif
%ifarch %{ix86} x86_64
    --with-tune=generic \
%endif
%ifarch %{ix86}
    --with-arch=i686 \
%endif
%ifarch x86_64
    --with-arch_32=i686 \
%endif
%ifarch s390 s390x
    --with-arch=z9-109 --with-tune=z10 --enable-decimal-float \
%endif
%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'`" \
    XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
    GCJFLAGS="$OPT_FLAGS" \
    ../configure --enable-bootstrap \
%if %{build_fortran}
    --enable-languages=c,c++,fortran,lto \
%else
    --enable-languages=c,c++,lto \
%endif
    $CONFIGURE_OPTS
%ifarch ia64
GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
%else
GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
%endif
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared%{nonsharedver} )' \
  > %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_system.so
# Relink libcc1 against -lstdc++_nonshared:
sed -i -e '/^postdeps/s/-lstdc++/-lstdc++_system/' libcc1/libtool
rm -f libcc1/libcc1.la
make -C libcc1 libcc1.la
CC="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cc`"
CXX="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cxx` `%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-includes`"
# Build libgccjit separately, so that normal compiler binaries aren't -fpic
# unnecessarily.
mkdir objlibgccjit
cd objlibgccjit
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
    CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g'`" \
    XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
    ../../configure --disable-bootstrap --enable-host-shared \
    --enable-languages=jit $CONFIGURE_OPTS
make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" all-gcc
cp -a gcc/libgccjit.so* ../gcc/
cd ../gcc/
ln -sf xgcc %{gcc_target_platform}-gcc-%{gcc_major}
cp -a Makefile{,.orig}
sed -i -e '/^CHECK_TARGETS/s/$/ check-jit/' Makefile
touch -r Makefile.orig Makefile
rm Makefile.orig
make jit.sphinx.html
make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html
cd ..
%if %{build_isl}
cp -a isl-install/lib/libisl.so.15 gcc/
%endif
# Make generated man pages even if Pod::Man is not new enough
perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
for i in ../gcc/doc/*.texi; do
  cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
done
make -C gcc generated-manpages
for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
# Make generated doxygen pages.
%if %{build_libstdcxx_docs}
cd %{gcc_target_platform}/libstdc++-v3
make doc-html-doxygen
make doc-man-doxygen
cd ../..
%endif
# Copy various doc files here and there
cd ..
mkdir -p rpm.doc/gfortran rpm.doc/libquadmath rpm.doc/libitm
mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/jit,libstdc++-v3,libgomp,libcc1,libatomic,libsanitizer,libcilkrts,libmpx}
for i in {gcc,gcc/cp,gcc/jit,libstdc++-v3,libgomp,libcc1,libatomic,libsanitizer,libcilkrts,libmpx}/ChangeLog*; do
    cp -p $i rpm.doc/changelogs/$i
done
%if %{build_fortran}
(cd gcc/fortran; for i in ChangeLog*; do
    cp -p $i ../../rpm.doc/gfortran/$i
done)
(cd libgfortran; for i in ChangeLog*; do
    cp -p $i ../rpm.doc/gfortran/$i.libgfortran
done)
%endif
%if %{build_libquadmath}
(cd libquadmath; for i in ChangeLog* COPYING.LIB; do
    cp -p $i ../rpm.doc/libquadmath/$i.libquadmath
done)
%endif
%if %{build_libitm}
(cd libitm; for i in ChangeLog*; do
    cp -p $i ../rpm.doc/libitm/$i.libitm
done)
%endif
rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
mkdir libstdc++_compat_test
cd libstdc++_compat_test
readelf -Ws %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_[0-9.]*//' | LC_ALL=C sort -u > system.abilist
readelf -Ws ../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6 | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_[0-9.]*//' | LC_ALL=C sort -u > vanilla.abilist
diff -up system.abilist vanilla.abilist | awk '/^\+\+\+/{next}/^\+/{print gensub(/^+(.*)$/,"\\1","1",$0)}' > system2vanilla.abilist.diff
../obj-%{gcc_target_platform}/gcc/xgcc -B ../obj-%{gcc_target_platform}/gcc/ -shared -o libstdc++_nonshared.so -Wl,--whole-archive ../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a -Wl,--no-whole-archive %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6
readelf -Ws libstdc++_nonshared.so | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_[0-9.]*//' | LC_ALL=C sort -u > nonshared.abilist
echo ====================NONSHARED=========================
ldd -d -r ./libstdc++_nonshared.so || :
ldd -u ./libstdc++_nonshared.so || :
diff -up system2vanilla.abilist.diff nonshared.abilist || :
echo ====================NONSHARED END=====================
rm -f libstdc++_nonshared.so
cd ..
%install
rm -fr %{buildroot}
%if %{build_libstdcxx_docs}
%if 0%{?rhel} < 7
export PATH=`pwd`/obj-%{gcc_target_platform}/doxygen-install/bin/${PATH:+:${PATH}}
%endif
%endif
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
# Also set LD_LIBRARY_PATH so that DTS eu-strip (called from find-debuginfo.sh)
# can find the libraries it needs.
%{?scl:export LD_LIBRARY_PATH=%{_libdir}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}}
perl -pi -e \
  's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
  libstdc++-v3/doc/html/api.html
cd obj-%{gcc_target_platform}
TARGET_PLATFORM=%{gcc_target_platform}
# There are some MP bugs in libstdc++ Makefiles
make -C %{gcc_target_platform}/libstdc++-v3
%if 0%{?scl:1}
rm -f gcc/libgcc_s.so
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat}
GROUP ( /%{_lib}/libgcc_s.so.1 libgcc.a )' > gcc/libgcc_s.so
%endif
make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
  infodir=%{buildroot}%{_infodir} install
%if 0%{?scl:1}
rm -f gcc/libgcc_s.so
ln -sf libgcc_s.so.1 gcc/libgcc_s.so
%endif
FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
%if 0%{?scl:1}
ln -sf ../../../../bin/ar $FULLEPATH/ar
ln -sf ../../../../bin/as $FULLEPATH/as
ln -sf ../../../../bin/ld $FULLEPATH/ld
ln -sf ../../../../bin/ld.bfd $FULLEPATH/ld.bfd
ln -sf ../../../../bin/ld.gold $FULLEPATH/ld.gold
ln -sf ../../../../bin/nm $FULLEPATH/nm
ln -sf ../../../../bin/ranlib $FULLEPATH/ranlib
ln -sf ../../../../bin/strip $FULLEPATH/strip
%endif
%if %{build_isl}
cp -a isl-install/lib/libisl.so.15 $FULLPATH/
%endif
# fix some things
ln -sf gcc %{buildroot}%{_prefix}/bin/cc
mkdir -p %{buildroot}/lib
ln -sf ..%{_prefix}/bin/cpp %{buildroot}/lib/cpp
%if %{build_fortran}
ln -sf gfortran %{buildroot}%{_prefix}/bin/f95
%endif
rm -f %{buildroot}%{_infodir}/dir
gzip -9 %{buildroot}%{_infodir}/*.info*
ln -sf gcc %{buildroot}%{_prefix}/bin/gnatgcc
cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
  if ! diff -up $cxxconfig $i; then
    cat > %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/bits/c++config.h <<EOF
#ifndef _CPP_CPPCONFIG_WRAPPER
#define _CPP_CPPCONFIG_WRAPPER 1
#include <bits/wordsize.h>
#if __WORDSIZE == 32
%ifarch %{multilib_64_archs}
`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)`
%else
`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
%endif
#else
%ifarch %{multilib_64_archs}
`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
%else
`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)`
%endif
#endif
#endif
EOF
    break
  fi
done
for f in `find %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/ -name c++config.h`; do
  for i in 1 2 4 8; do
    sed -i -e 's/#define _GLIBCXX_ATOMIC_BUILTINS_'$i' 1/#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_'$i'\
&\
#endif/' $f
  done
  # Force the old ABI unconditionally, the new one does not work in the
  # libstdc++_nonshared.a model against RHEL 6/7 libstdc++.so.6.
  sed -i -e 's/\(define[[:blank:]]*_GLIBCXX_USE_DUAL_ABI[[:blank:]]*\)1/\10/' $f
done
# Nuke bits/*.h.gch dirs
# 1) there is no bits/*.h header installed, so when gch file can't be
#    used, compilation fails
# 2) sometimes it is hard to match the exact options used for building
#    libstdc++-v3 or they aren't desirable
# 3) there are multilib issues, conflicts etc. with this
# 4) it is huge
# People can always precompile on their own whatever they want, but
# shipping this for everybody is unnecessary.
rm -rf %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/bits/*.h.gch
%if %{build_libstdcxx_docs}
libstdcxx_doc_builddir=%{gcc_target_platform}/libstdc++-v3/doc/doxygen
mkdir -p ../rpm.doc/libstdc++-v3
cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html
cp -r -p $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api
mkdir -p %{buildroot}%{_mandir}/man3
cp -r -p $libstdcxx_doc_builddir/man/man3/* %{buildroot}%{_mandir}/man3/
find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm
%endif
%ifarch sparcv9 sparc64
ln -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gcc \
  %{buildroot}%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}%{?_gnu}-gcc
%endif
%ifarch ppc ppc64
ln -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gcc \
  %{buildroot}%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}%{?_gnu}-gcc
%endif
%ifarch sparcv9 ppc
FULLLPATH=$FULLPATH/lib32
%endif
%ifarch sparc64 ppc64
FULLLPATH=$FULLPATH/lib64
%endif
if [ -n "$FULLLPATH" ]; then
  mkdir -p $FULLLPATH
else
  FULLLPATH=$FULLPATH
fi
find %{buildroot} -name \*.la | xargs rm -f
%if %{build_fortran}
mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.spec $FULLPATH/libgfortran.spec
%endif
%if %{build_libitm}
mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/
%endif
%if %{build_libasan}
mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/
%endif
%if %{build_libcilkrts}
mv %{buildroot}%{_prefix}/%{_lib}/libcilkrts.spec $FULLPATH/
%endif
%if %{build_libmpx}
mv %{buildroot}%{_prefix}/%{_lib}/libmpx.spec $FULLPATH/
%endif
mkdir -p %{buildroot}/%{_lib}
mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1
chmod 755 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1
ln -sf libgcc_s-%{gcc_major}-%{DATE}.so.1 %{buildroot}/%{_lib}/libgcc_s.so.1
ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
%ifarch sparcv9 ppc
ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
%endif
%ifarch %{multilib_64_archs}
ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
%endif
rm -f $FULLPATH/libgcc_s.so
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat}
GROUP ( /%{_lib}/libgcc_s.so.1 libgcc.a )' > $FULLPATH/libgcc_s.so
%ifarch sparcv9 ppc
rm -f $FULLPATH/64/libgcc_s.so
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat2}
GROUP ( /lib64/libgcc_s.so.1 libgcc.a )' > $FULLPATH/64/libgcc_s.so
%endif
%ifarch %{multilib_64_archs}
rm -f $FULLPATH/32/libgcc_s.so
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat2}
GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/32/libgcc_s.so
%endif
mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
cp -a %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a \
  $FULLLPATH/libstdc++_nonshared.a
rm -f $FULLEPATH/libgccjit.so
mkdir -p %{buildroot}%{_prefix}/%{_lib}/
cp -a objlibgccjit/gcc/libgccjit.so.* %{buildroot}%{_prefix}/%{_lib}/
rm -f $FULLPATH/libgccjit.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{_prefix}/%{_lib}/libgccjit.so.0 )' > $FULLPATH/libgccjit.so
cp -a ../gcc/jit/libgccjit*.h $FULLPATH/include/
/usr/bin/install -c -m 644 objlibgccjit/gcc/doc/libgccjit.info %{buildroot}/%{_infodir}/
gzip -9 %{buildroot}/%{_infodir}/libgccjit.info
pushd $FULLPATH
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgomp.so.1 )' > libgomp.so
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared )' > libstdc++.so
%if %{build_fortran}
rm -f libgfortran.so
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgfortran.so.4 )' > libgfortran.so
%endif
%if %{build_libquadmath}
rm -f libquadmath.so
echo '/* GNU ld script */
%{oformat}
%if 0%{!?scl:1}
INPUT ( %{_prefix}/%{_lib}/libquadmath.so.0 )' > libquadmath.so
%else
%if 0%{?rhel} >= 7
INPUT ( %{_root_prefix}/%{_lib}/libquadmath.so.0 )' > libquadmath.so
%else
INPUT ( libquadmath.a )' > libquadmath.so
%endif
%endif
%endif
%if %{build_libitm}
rm -f libitm.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libitm.so.1 )' > libitm.so
%endif
%if %{build_libatomic}
rm -f libatomic.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libatomic.so.1 )' > libatomic.so
%endif
%if %{build_libasan}
rm -f libasan.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libasan.so.4 )' > libasan.so
%endif
%if %{build_libtsan}
rm -f libtsan.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libtsan.so.0 )' > libtsan.so
%endif
%if %{build_libubsan}
rm -f libubsan.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libubsan.so.0 )' > libubsan.so
%endif
%if %{build_liblsan}
rm -f liblsan.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/liblsan.so.0 )' > liblsan.so
%endif
%if %{build_libcilkrts}
rm -f libcilkrts.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libcilkrts.so.5 )' > libcilkrts.so
%endif
%if %{build_libmpx}
rm -f libmpx.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libmpx.so.2 )' > libmpx.so
rm -f libmpxwrappers.so
echo '/* GNU ld script */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libmpxwrappers.so.2 )' > libmpxwrappers.so
%endif
mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++fs.*a $FULLLPATH/
mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a .
%if %{build_fortran}
mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a .
%endif
mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.*a .
%if %{build_libquadmath}
mv -f %{buildroot}%{_prefix}/%{_lib}/libquadmath.*a $FULLLPATH/
%endif
%if %{build_libitm}
mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/
%endif
%if %{build_libatomic}
mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLLPATH/
%endif
%if %{build_libasan}
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan_preinit.o $FULLLPATH/
%endif
%if %{build_libtsan}
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLPATH/
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan_preinit.o $FULLPATH/
%endif
%if %{build_libubsan}
mv -f %{buildroot}%{_prefix}/%{_lib}/libubsan.*a $FULLLPATH/
%endif
%if %{build_liblsan}
mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan.*a $FULLPATH/
%endif
%if %{build_libcilkrts}
mv -f %{buildroot}%{_prefix}/%{_lib}/libcilkrts.*a $FULLLPATH/
%endif
%if %{build_libmpx}
mv -f %{buildroot}%{_prefix}/%{_lib}/libmpx.*a $FULLLPATH/
mv -f %{buildroot}%{_prefix}/%{_lib}/libmpxwrappers.*a $FULLLPATH/
%endif
%ifarch sparcv9 ppc
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libstdc++.so.6 -lstdc++_nonshared )' > 64/libstdc++.so
%if %{build_fortran}
rm -f 64/libgfortran.so
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libgfortran.so.4 )' > 64/libgfortran.so
%endif
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libgomp.so.1 )' > 64/libgomp.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{_prefix}/lib64/libgccjit.so.0 )' > 64/libgccjit.so
%if %{build_libquadmath}
rm -f 64/libquadmath.so
echo '/* GNU ld script */
%{oformat2}
%if 0%{!?scl:1}
INPUT ( %{_prefix}/lib64/libquadmath.so.0 )' > 64/libquadmath.so
%else
%if 0%{?rhel} >= 7
INPUT ( %{_root_prefix}/lib64/libquadmath.so.0 )' > 64/libquadmath.so
%else
INPUT ( libquadmath.a )' > 64/libquadmath.so
%endif
%endif
%endif
%if %{build_libitm}
rm -f 64/libitm.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libitm.so.1 )' > 64/libitm.so
%endif
%if %{build_libatomic}
rm -f 64/libatomic.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libatomic.so.1 )' > 64/libatomic.so
%endif
%if %{build_libasan}
rm -f 64/libasan.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libasan.so.4 )' > 64/libasan.so
%endif
%if %{build_libubsan}
rm -f 64/libubsan.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libubsan.so.0 )' > 64/libubsan.so
%endif
%if %{build_libcilkrts}
rm -f 64/libcilkrts.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libcilkrts.so.5 )' > 64/libcilkrts.so
%endif
%if %{build_libmpx}
rm -f 64/libmpx.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libmpx.so.2 )' > 64/libmpx.so
rm -f 64/libmpxwrappers.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libmpxwrappers.so.2 )' > 64/libmpxwrappers.so
%endif
mv -f %{buildroot}%{_prefix}/lib64/libsupc++.*a 64/
%if %{build_fortran}
mv -f %{buildroot}%{_prefix}/lib64/libgfortran.*a 64/
%endif
mv -f %{buildroot}%{_prefix}/lib64/libgomp.*a 64/
%if %{build_libquadmath}
mv -f %{buildroot}%{_prefix}/lib64/libquadmath.*a 64/
%endif
ln -sf lib32/libstdc++.a libstdc++.a
ln -sf ../lib64/libstdc++.a 64/libstdc++.a
ln -sf lib32/libstdc++fs.a libstdc++fs.a
ln -sf ../lib64/libstdc++fs.a 64/libstdc++fs.a
ln -sf lib32/libstdc++_nonshared.a libstdc++_nonshared.a
ln -sf ../lib64/libstdc++_nonshared.a 64/libstdc++_nonshared.a
%if %{build_libquadmath}
ln -sf lib32/libquadmath.a libquadmath.a
ln -sf ../lib64/libquadmath.a 64/libquadmath.a
%endif
%if %{build_libitm}
ln -sf lib32/libitm.a libitm.a
ln -sf ../lib64/libitm.a 64/libitm.a
%endif
%if %{build_libatomic}
ln -sf lib32/libatomic.a libatomic.a
ln -sf ../lib64/libatomic.a 64/libatomic.a
%endif
%if %{build_libasan}
ln -sf lib32/libasan.a libasan.a
ln -sf ../lib64/libasan.a 64/libasan.a
ln -sf lib32/libasan_preinit.o libasan_preinit.o
ln -sf ../lib64/libasan_preinit.o 64/libasan_preinit.o
%endif
%if %{build_libubsan}
ln -sf lib32/libubsan.a libubsan.a
ln -sf ../lib64/libubsan.a 64/libubsan.a
%endif
%if %{build_libcilkrts}
ln -sf lib32/libcilkrts.a libcilkrts.a
ln -sf ../lib64/libcilkrts.a 64/libcilkrts.a
%endif
%if %{build_libmpx}
ln -sf lib32/libmpx.a libmpx.a
ln -sf ../lib64/libmpx.a 64/libmpx.a
ln -sf lib32/libmpxwrappers.a libmpxwrappers.a
ln -sf ../lib64/libmpxwrappers.a 64/libmpxwrappers.a
%endif
%endif
%ifarch %{multilib_64_archs}
mkdir -p 32
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libstdc++.so.6 -lstdc++_nonshared )' > 32/libstdc++.so
%if %{build_fortran}
rm -f 32/libgfortran.so
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libgfortran.so.4 )' > 32/libgfortran.so
%endif
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libgomp.so.1 )' > 32/libgomp.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{_prefix}/lib/libgccjit.so.0 )' > 32/libgccjit.so
%if %{build_libquadmath}
rm -f 32/libquadmath.so
echo '/* GNU ld script */
%{oformat2}
%if 0%{!?scl:1}
INPUT ( %{_prefix}/lib/libquadmath.so.0 )' > 32/libquadmath.so
%else
%if 0%{?rhel} >= 7
INPUT ( %{_root_prefix}/lib/libquadmath.so.0 )' > 32/libquadmath.so
%else
INPUT ( libquadmath.a )' > 32/libquadmath.so
%endif
%endif
%endif
%if %{build_libitm}
rm -f 32/libitm.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libitm.so.1 )' > 32/libitm.so
%endif
%if %{build_libatomic}
rm -f 32/libatomic.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libatomic.so.1 )' > 32/libatomic.so
%endif
%if %{build_libasan}
rm -f 32/libasan.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libasan.so.4 )' > 32/libasan.so
%endif
%if %{build_libubsan}
rm -f 32/libubsan.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libubsan.so.0 )' > 32/libubsan.so
%endif
%if %{build_libcilkrts}
rm -f 32/libcilkrts.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libcilkrts.so.5 )' > 32/libcilkrts.so
%endif
%if %{build_libmpx}
rm -f 32/libmpx.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libmpx.so.2 )' > 32/libmpx.so
rm -f 32/libmpxwrappers.so
echo '/* GNU ld script */
%{oformat2}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libmpxwrappers.so.2 )' > 32/libmpxwrappers.so
%endif
mv -f %{buildroot}%{_prefix}/lib/libsupc++.*a 32/
%if %{build_fortran}
mv -f %{buildroot}%{_prefix}/lib/libgfortran.*a 32/
%endif
mv -f %{buildroot}%{_prefix}/lib/libgomp.*a 32/
%if %{build_libquadmath}
mv -f %{buildroot}%{_prefix}/lib/libquadmath.*a 32/
%endif
%endif
%ifarch sparc64 ppc64
ln -sf ../lib32/libstdc++.a 32/libstdc++.a
ln -sf lib64/libstdc++.a libstdc++.a
ln -sf ../lib32/libstdc++fs.a 32/libstdc++fs.a
ln -sf lib64/libstdc++fs.a libstdc++fs.a
ln -sf ../lib32/libstdc++_nonshared.a 32/libstdc++_nonshared.a
ln -sf lib64/libstdc++_nonshared.a libstdc++_nonshared.a
%if %{build_libquadmath}
ln -sf ../lib32/libquadmath.a 32/libquadmath.a
ln -sf lib64/libquadmath.a libquadmath.a
%endif
%if %{build_libitm}
ln -sf ../lib32/libitm.a 32/libitm.a
ln -sf lib64/libitm.a libitm.a
%endif
%if %{build_libatomic}
ln -sf ../lib32/libatomic.a 32/libatomic.a
ln -sf lib64/libatomic.a libatomic.a
%endif
%if %{build_libasan}
ln -sf ../lib32/libasan.a 32/libasan.a
ln -sf lib64/libasan.a libasan.a
ln -sf ../lib32/libasan_preinit.o 32/libasan_preinit.o
ln -sf lib64/libasan_preinit.o libasan_preinit.o
%endif
%if %{build_libubsan}
ln -sf ../lib32/libubsan.a 32/libubsan.a
ln -sf lib64/libubsan.a libubsan.a
%endif
%if %{build_libcilkrts}
ln -sf ../lib32/libcilkrts.a 32/libcilkrts.a
ln -sf lib64/libcilkrts.a libcilkrts.a
%endif
%if %{build_libmpx}
ln -sf ../lib32/libmpx.a 32/libmpx.a
ln -sf lib64/libmpx.a libmpx.a
ln -sf ../lib32/libmpxwrappers.a 32/libmpxwrappers.a
ln -sf lib64/libmpxwrappers.a libmpxwrappers.a
%endif
%else
%ifarch %{multilib_64_archs}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++.a 32/libstdc++.a
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++fs.a 32/libstdc++fs.a
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++_nonshared.a 32/libstdc++_nonshared.a
%if %{build_libquadmath}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libquadmath.a 32/libquadmath.a
%endif
%if %{build_libitm}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libitm.a 32/libitm.a
%endif
%if %{build_libatomic}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libatomic.a 32/libatomic.a
%endif
%if %{build_libasan}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libasan.a 32/libasan.a
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libasan_preinit.o 32/libasan_preinit.o
%endif
%if %{build_libubsan}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libubsan.a 32/libubsan.a
%endif
%if %{build_libcilkrts}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libcilkrts.a 32/libcilkrts.a
%endif
%if %{build_libmpx}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libmpx.a 32/libmpx.a
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libmpxwrappers.a 32/libmpxwrappers.a
%endif
%endif
%endif
# If we are building a debug package then copy all of the static archives
# into the debug directory to keep them as unstripped copies.
%if 0%{?_enable_debug_packages}
mkdir -p $RPM_BUILD_ROOT%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
adirs="$FULLPATH"
if [ $FULLLPATH -ne $FULLPATH ]; then
  adirs="$adirs $FULLLPATH"
fi
for f in `find $adirs -maxdepth 1 -a \
         \( -name libgfortran.a -o -name libgomp.a \
            -o -name libgcc.a -o -name libgcc_eh.a -o -name libgcov.a \
            -o -name libquadmath.a -o -name libitm.a \
            -o -name libatomic.a -o -name libasan.a \
            -o -name libtsan.a -o -name libubsan.a \
            -o -name liblsan.a -o -name libcilkrts.a \
            -o -name libmpx.a -o -name libmpxwrappers.a \
            -o -name libcc1.a -o -name libstdc++_nonshared.a \
            -o -name libsupc++.a \
            -o -name libstdc++.a -o -name libcaf_single.a \
            -o -name libstdc++fs.a \) -a -type f`; do
  cp -a $f $RPM_BUILD_ROOT%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/
done
%endif
# Strip debug info from Fortran/ObjC/Java static libraries
strip -g `find . \( -name libgfortran.a  -o -name libgomp.a \
            -o -name libgcc.a -o -name libgcov.a \
            -o -name libquadmath.a -o -name libitm.a \
            -o -name libatomic.a -o -name libasan.a \
            -o -name libtsan.a -o -name libubsan.a \
            -o -name liblsan.a -o -name libcilkrts.a \
            -o -name libmpx.a -o -name libmpxwrappers.a \
            -o -name libcc1.a \) -a -type f`
popd
%if %{build_fortran}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.4.*
%endif
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgomp.so.1.*
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.*
%if %{build_libquadmath}
%if 0%{!?scl:1}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.*
%endif
%endif
%if %{build_libitm}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/libitm.so.1* %{buildroot}%{_root_prefix}/%{_lib}/
mkdir -p %{buildroot}%{_root_infodir}
mv %{buildroot}%{_infodir}/libitm.info* %{buildroot}%{_root_infodir}/
%endif
%endif
%if %{build_libatomic}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1* %{buildroot}%{_root_prefix}/%{_lib}/
mkdir -p %{buildroot}%{_root_infodir}
%endif
%endif
%if %{build_libasan}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.4.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/libasan.so.4* %{buildroot}%{_root_prefix}/%{_lib}/
mkdir -p %{buildroot}%{_root_infodir}
%endif
%endif
%if %{build_libtsan}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0* %{buildroot}%{_root_prefix}/%{_lib}/
mkdir -p %{buildroot}%{_root_infodir}
%endif
%endif
%if %{build_libubsan}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.0.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/libubsan.so.0* %{buildroot}%{_root_prefix}/%{_lib}/
mkdir -p %{buildroot}%{_root_infodir}
%endif
%endif
%if %{build_liblsan}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0* %{buildroot}%{_root_prefix}/%{_lib}/
mkdir -p %{buildroot}%{_root_infodir}
%endif
%endif
%if %{build_libcilkrts}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcilkrts.so.5.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/libcilkrts.so.5* %{buildroot}%{_root_prefix}/%{_lib}/
%endif
%endif
%if %{build_libmpx}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmpx.so.2.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/libmpx.so.2* %{buildroot}%{_root_prefix}/%{_lib}/
%endif
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmpxwrappers.so.2.*
%if 0%{?scl:1}
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
mv %{buildroot}%{_prefix}/%{_lib}/libmpxwrappers.so.2* %{buildroot}%{_root_prefix}/%{_lib}/
%endif
%endif
mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h
mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h
for h in `find $FULLPATH/include -name \*.h`; do
  if grep -q 'It has been auto-edited by fixincludes from' $h; then
    rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'`
    diff -up $rh $h || :
    rm -f $h
  fi
done
cd ..
%if 0%{!?scl:1}
for i in %{buildroot}%{_prefix}/bin/{*gcc,*++,gcov,gfortran,gcc-ar,gcc-nm,gcc-ranlib}; do
  mv -f $i ${i}5
done
%endif
# Remove binaries we will not be including, so that they don't end up in
# gcc7-debuginfo
rm -f %{buildroot}%{_prefix}/%{_lib}/{libffi*,libiberty.a,libmudflap*,libstdc++*,libgfortran*}
%if 0%{?scl:1}
rm -f %{buildroot}%{_prefix}/%{_lib}/{libquadmath*,libitm*,libatomic*,libasan*,libtsan*,libubsan*,liblsan*}
%else
%if 0%{rhel} >= 7
rm -f %{buildroot}%{_prefix}/%{_lib}/{libitm*,libatomic*}
%endif
%endif
rm -f %{buildroot}%{_prefix}/%{_lib}/libgomp*
rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a
rm -f %{buildroot}%{_prefix}/%{_lib}/libssp*
rm -f %{buildroot}%{_prefix}/%{_lib}/libvtv* || :
rm -f %{buildroot}/lib/cpp
rm -f %{buildroot}/%{_lib}/libgcc_s*
rm -f %{buildroot}%{_prefix}/bin/{f95,gccbug,gnatgcc*}
rm -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gfortran
%if 0%{!?scl:1}
rm -f %{buildroot}%{_prefix}/bin/{*c++*,cc,cpp}
%endif
rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || :
%ifarch %{multilib_64_archs}
# Remove libraries for the other arch on multilib arches
rm -f %{buildroot}%{_prefix}/lib/lib*.so*
rm -f %{buildroot}%{_prefix}/lib/lib*.a
rm -f %{buildroot}/lib/libgcc_s*.so*
%else
%ifarch sparcv9 ppc
rm -f %{buildroot}%{_prefix}/lib64/lib*.so*
rm -f %{buildroot}%{_prefix}/lib64/lib*.a
rm -f %{buildroot}/lib64/libgcc_s*.so*
%endif
%endif
%ifnarch sparc64 ppc64
%ifarch %{multilib_64_archs}
cat <<\EOF > %{buildroot}%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
#!/bin/sh
%ifarch s390x
exec %{gcc_target_platform}-gcc-%{gcc_major} -m31 "$@"
%else
exec %{gcc_target_platform}-gcc-%{gcc_major} -m32 "$@"
%endif
EOF
chmod 755 %{buildroot}%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
%endif
%endif
# Help plugins find out nvra.
echo gcc-%{version}-%{release}.%{arch} > $FULLPATH/rpmver
%check
cd obj-%{gcc_target_platform}
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
# Test against the system libstdc++.so.6 + libstdc++_nonshared.a combo
mv %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6{,.not_here}
mv %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so{,.not_here}
ln -sf %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 \
  %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6
echo '/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
%{oformat}
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared )' \
  > %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so
cp -a %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a \
  %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared.a
# run the tests.
make %{?_smp_mflags} -k check RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || :
( LC_ALL=C ../contrib/test_summary -t || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' > testresults
rm -rf gcc/testsuite.prev
mv gcc/testsuite{,.prev}
rm -f gcc/site.exp
make %{?_smp_mflags} -C gcc -k check-gcc check-g++ ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}' compat.exp struct-layout-1.exp" || :
mv gcc/testsuite/gcc/gcc.sum{,.sent}
mv gcc/testsuite/g++/g++.sum{,.sent}
( LC_ALL=C ../contrib/test_summary -o -t || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' > testresults2
rm -rf gcc/testsuite.compat
mv gcc/testsuite{,.compat}
mv gcc/testsuite{.prev,}
echo ====================TESTING=========================
cat testresults
echo ===`gcc --version | head -1` compatibility tests====
cat testresults2
echo ====================TESTING END=====================
mkdir testlogs-%{_target_platform}-%{version}-%{release}
for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats.*/tests/'`; do
  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
done
for i in `find gcc/testsuite.compat -name \*.log | grep -v 'config.log\|acats.*/tests/'`; do
  ln $i testlogs-%{_target_platform}-%{version}-%{release}/`basename $i`.compat || :
done
tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
  | uuencode testlogs-%{_target_platform}.tar.bz2 || :
rm -rf testlogs-%{_target_platform}-%{version}-%{release}
%clean
rm -rf %{buildroot}
%if 0%{?scl:1}
%post gfortran
if [ -f %{_infodir}/gfortran.info.gz ]; then
  /sbin/install-info \
    --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
fi
%preun gfortran
if [ $1 = 0 -a -f %{_infodir}/gfortran.info.gz ]; then
  /sbin/install-info --delete \
    --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
fi
%endif
%post gdb-plugin -p /sbin/ldconfig
%postun gdb-plugin -p /sbin/ldconfig
%post -n %{?scl_prefix}libgccjit -p /sbin/ldconfig
%postun -n %{?scl_prefix}libgccjit -p /sbin/ldconfig
%post -n %{?scl_prefix}libgccjit-docs
if [ -f %{_infodir}/libgccjit.info.gz ]; then
  /sbin/install-info \
    --info-dir=%{_infodir} %{_infodir}/libgccjit.info.gz || :
fi
%preun -n %{?scl_prefix}libgccjit-docs
if [ $1 = 0 -a -f %{_infodir}/libgccjit.info.gz ]; then
  /sbin/install-info --delete \
    --info-dir=%{_infodir} %{_infodir}/libgccjit.info.gz || :
fi
%post -n %{?scl_prefix}libquadmath
/sbin/ldconfig
if [ -f %{_infodir}/libquadmath.info.gz ]; then
  /sbin/install-info \
    --info-dir=%{_infodir} %{_infodir}/libquadmath.info.gz || :
fi
%preun -n %{?scl_prefix}libquadmath
if [ $1 = 0 -a -f %{_infodir}/libquadmath.info.gz ]; then
  /sbin/install-info --delete \
    --info-dir=%{_infodir} %{_infodir}/libquadmath.info.gz || :
fi
%postun -n %{?scl_prefix}libquadmath -p /sbin/ldconfig
%post -n libatomic -p /sbin/ldconfig
%postun -n libatomic -p /sbin/ldconfig
%post -n libasan4 -p /sbin/ldconfig
%postun -n libasan4 -p /sbin/ldconfig
%post -n libtsan -p /sbin/ldconfig
%postun -n libtsan -p /sbin/ldconfig
%post -n libubsan -p /sbin/ldconfig
%postun -n libubsan -p /sbin/ldconfig
%post -n liblsan -p /sbin/ldconfig
%postun -n liblsan -p /sbin/ldconfig
%post -n libcilkrts -p /sbin/ldconfig
%postun -n libcilkrts -p /sbin/ldconfig
%post -n libmpx -p /sbin/ldconfig
%postun -n libmpx -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%{_prefix}/bin/gcc%{!?scl:5}
%{_prefix}/bin/gcov%{!?scl:5}
%{_prefix}/bin/gcov-tool%{!?scl:5}
%{_prefix}/bin/gcc-ar%{!?scl:5}
%{_prefix}/bin/gcc-nm%{!?scl:5}
%{_prefix}/bin/gcc-ranlib%{!?scl:5}
%ifarch ppc
%{_prefix}/bin/%{_target_platform}-gcc%{!?scl:5}
%endif
%ifarch sparc64 sparcv9
%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}%{?_gnu}-gcc%{!?scl:5}
%endif
%ifarch ppc64
%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}%{?_gnu}-gcc%{!?scl:5}
%endif
%{_prefix}/bin/%{gcc_target_platform}-gcc%{!?scl:5}
%{_prefix}/bin/%{gcc_target_platform}-gcc-%{gcc_major}
%ifnarch sparc64 ppc64
%ifarch %{multilib_64_archs}
%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
%endif
%endif
%if 0%{?scl:1}
%{_prefix}/bin/cc
%{_prefix}/bin/cpp
%{_mandir}/man1/gcc.1*
%{_mandir}/man1/cpp.1*
%{_mandir}/man1/gcov.1*
%{_infodir}/gcc*
%{_infodir}/cpp*
%endif
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/rpmver
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stddef.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdarg.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdfix.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/varargs.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/float.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/limits.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdbool.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/iso646.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/syslimits.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/unwind.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/omp.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/openacc.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdint.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdint-gcc.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdalign.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdnoreturn.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdatomic.h
%ifarch %{ix86} x86_64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xmmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/emmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pmmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tmmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ammintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/smmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/nmmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/wmmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/immintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86intrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fma4intrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xopintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/lwpintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/popcntintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmiintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tbmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia32intrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx2intrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmi2intrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/f16cintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fmaintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/lzcntintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/rtmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xtestintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/adxintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/prfchwintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/rdseedintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fxsrintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveoptintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512cdintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512erintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512pfintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/shaintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm_malloc.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm3dnow.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cpuid.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cross-stdarg.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bwintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512dqintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512ifmaintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512ifmavlintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmiintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmivlintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vlbwintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vldqintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vlintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clflushoptintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clwbintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mwaitxintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsavecintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsavesintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clzerointrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pkuintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124fmapsintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124vnniwintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vpopcntdqintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sgxintrin.h
%endif
%ifarch ia64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h
%endif
%ifarch ppc ppc64 ppc64le ppc64p7
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ppc-asm.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/altivec.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/spe.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/paired.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ppu_intrinsics.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/si2vmx.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/spu2vmx.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vec_types.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
%endif
%ifarch %{arm}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/unwind-arm-common.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_neon.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_acle.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_cmse.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_fp16.h
%endif
%ifarch aarch64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_neon.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_acle.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_fp16.h
%endif
%ifarch sparc sparcv9 sparc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/visintrin.h
%endif
%ifarch s390 s390x
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/s390intrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vecintrin.h
%endif
%if %{build_libcilkrts}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cilk
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libcilkrts.spec
%endif
%if %{build_libmpx}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.spec
%endif
%if %{build_libasan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer
%endif
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/lto1
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/lto-wrapper
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/liblto_plugin.so*
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/collect2
%if 0%{?scl:1}
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ar
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/as
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld.bfd
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld.gold
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/nm
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ranlib
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/strip
%endif
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/crt*.o
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcov.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_eh.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_s.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.spec
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.so
%if %{build_libitm}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.spec
%endif
%if %{build_libasan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsanitizer.spec
%endif
%ifarch sparcv9 sparc64 ppc ppc64
%if %{build_libquadmath}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
%endif
%endif
%if %{build_isl}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libisl.so.*
%endif
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/crt*.o
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcov.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_eh.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_s.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgccjit.so
%if %{build_libquadmath}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libquadmath.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libquadmath.so
%endif
%if %{build_libitm}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libitm.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libitm.so
%endif
%if %{build_libatomic}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.so
%endif
%if %{build_libasan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan_preinit.o
%endif
%if %{build_libubsan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libubsan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libubsan.so
%endif
%if %{build_libcilkrts}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libcilkrts.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libcilkrts.so
%endif
%if %{build_libmpx}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libmpx.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libmpx.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libmpxwrappers.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libmpxwrappers.so
%endif
%endif
%ifarch %{multilib_64_archs}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/crt*.o
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcov.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_eh.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_s.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgccjit.so
%if %{build_libquadmath}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.so
%endif
%if %{build_libitm}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.so
%endif
%if %{build_libatomic}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.so
%endif
%if %{build_libasan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan_preinit.o
%endif
%if %{build_libubsan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.so
%endif
%if %{build_libcilkrts}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libcilkrts.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libcilkrts.so
%endif
%if %{build_libmpx}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libmpx.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libmpx.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libmpxwrappers.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libmpxwrappers.so
%endif
%endif
%ifarch sparcv9 sparc64 ppc ppc64
%if %{build_libquadmath}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
%endif
%if %{build_libitm}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.so
%endif
%if %{build_libatomic}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so
%endif
%if %{build_libasan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan_preinit.o
%endif
%if %{build_libtsan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
%endif
%if %{build_libubsan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
%endif
%if %{build_liblsan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
%endif
%if %{build_libcilkrts}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libcilkrts.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libcilkrts.so
%endif
%if %{build_libmpx}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.so
%endif
%endif
%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING* COPYING.RUNTIME
%files c++
%defattr(-,root,root,-)
%{_prefix}/bin/%{gcc_target_platform}-g++%{!?scl:5}
%{_prefix}/bin/g++%{!?scl:5}
%if 0%{?scl:1}
%{_prefix}/bin/%{gcc_target_platform}-c++
%{_prefix}/bin/c++
%{_mandir}/man1/g++.1*
%endif
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1plus
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++_nonshared.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libsupc++.a
%endif
%ifarch %{multilib_64_archs}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++_nonshared.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libsupc++.a
%endif
%ifarch sparcv9 ppc %{multilib_64_archs}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a
%endif
%ifarch sparcv9 sparc64 ppc ppc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_nonshared.a
%endif
%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
%files -n %{?scl_prefix}libstdc++%{!?scl:5}-devel
%defattr(-,root,root,-)
%dir %{_prefix}/include/c++
%{_prefix}/include/c++/%{gcc_major}
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++_nonshared.a
%endif
%ifarch sparc64 ppc64
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++_nonshared.a
%endif
%ifnarch sparcv9 sparc64 ppc ppc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_nonshared.a
%endif
%ifnarch sparcv9 ppc %{multilib_64_archs}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a
%endif
%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README*
%if %{build_libstdcxx_docs}
%files -n %{?scl_prefix}libstdc++%{!?scl:5}-docs
%defattr(-,root,root)
%{_mandir}/man3/*
%doc rpm.doc/libstdc++-v3/html
%endif
%if %{build_fortran}
%files gfortran
%defattr(-,root,root,-)
%{_prefix}/bin/gfortran%{!?scl:5}
%if 0%{?scl:1}
%{_mandir}/man1/gfortran.1*
%{_infodir}/gfortran*
%endif
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.f90
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.mod
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib_kinds.mod
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc.f90
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc.mod
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc_kinds.mod
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc_lib.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_arithmetic.mod
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_exceptions.mod
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_features.mod
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/f951
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.spec
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libcaf_single.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.so
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libcaf_single.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgfortran.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgfortran.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/finclude
%endif
%ifarch %{multilib_64_archs}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libcaf_single.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/finclude
%endif
%doc rpm.doc/gfortran/*
%endif
%if %{build_libquadmath}
%if 0%{!?scl:1}
%files -n %{?scl_prefix}libquadmath
%defattr(-,root,root,-)
%{_prefix}/%{_lib}/libquadmath.so.0*
%{_infodir}/libquadmath.info*
%doc rpm.doc/libquadmath/COPYING*
%endif
%files -n %{?scl_prefix}libquadmath-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/quadmath.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/quadmath_weak.h
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libquadmath.a
%endif
%ifarch sparc64 ppc64
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libquadmath.a
%endif
%ifnarch sparcv9 sparc64 ppc ppc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
%endif
%doc rpm.doc/libquadmath/ChangeLog*
%endif
%if %{build_libitm}
%files -n %{?scl_prefix}libitm-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libitm.a
%endif
%ifarch sparc64 ppc64
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libitm.a
%endif
%ifnarch sparcv9 sparc64 ppc ppc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.a
%endif
%doc rpm.doc/libitm/ChangeLog*
%endif
%if %{build_libatomic}
%files -n %{?scl_prefix}libatomic-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libatomic.a
%endif
%ifarch sparc64 ppc64
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libatomic.a
%endif
%ifnarch sparcv9 sparc64 ppc ppc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a
%endif
%doc rpm.doc/changelogs/libatomic/ChangeLog*
%endif
%if %{build_libasan}
%files -n libasan4
%defattr(-,root,root,-)
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libasan.so.4*
%files -n %{?scl_prefix}libasan-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%ifarch sparcv9 ppc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libasan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libasan_preinit.o
%endif
%ifarch sparc64 ppc64
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libasan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libasan_preinit.o
%endif
%ifnarch sparcv9 sparc64 ppc ppc64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan_preinit.o
%endif
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
%endif
%if %{build_libtsan}
%files -n libtsan
%defattr(-,root,root,-)
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libtsan.so.0*
%files -n %{?scl_prefix}libtsan-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan_preinit.o
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
%endif
%if %{build_libubsan}
%files -n libubsan
%defattr(-,root,root,-)
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libubsan.so.0*
%files -n %{?scl_prefix}libubsan-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
%endif
%if %{build_liblsan}
%files -n liblsan
%defattr(-,root,root,-)
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/liblsan.so.0*
%files -n %{?scl_prefix}liblsan-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
%endif
%if %{build_libcilkrts}
%files -n libcilkrts
%defattr(-,root,root,-)
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libcilkrts.so.5*
%files -n %{?scl_prefix}libcilkrts-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libcilkrts.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libcilkrts.a
%doc rpm.doc/changelogs/libcilkrts/ChangeLog* libcilkrts/README
%endif
%if %{build_libmpx}
%files -n libmpx
%defattr(-,root,root,-)
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libmpx.so.2*
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libmpxwrappers.so.2*
%files -n %{?scl_prefix}libmpx-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpx.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpxwrappers.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libmpxwrappers.a
%doc rpm.doc/changelogs/libmpx/ChangeLog*
%endif
%files -n %{?scl_prefix}libgccjit
%defattr(-,root,root,-)
%{_prefix}/%{_lib}/libgccjit.so*
%doc rpm.doc/changelogs/gcc/jit/ChangeLog*
%files -n %{?scl_prefix}libgccjit-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgccjit.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/libgccjit*.h
%files -n %{?scl_prefix}libgccjit-docs
%defattr(-,root,root,-)
%{_infodir}/libgccjit.info*
%doc rpm.doc/libgccjit-devel/*
%doc gcc/jit/docs/examples
%files plugin-devel
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gtype.state
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/include
%dir %{_prefix}/libexec/gcc
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
%files gdb-plugin
%defattr(-,root,root,-)
%{_prefix}/%{_lib}/libcc1.so*
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/libcc1plugin.so*
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/libcp1plugin.so*
%doc rpm.doc/changelogs/libcc1/ChangeLog*
%changelog
* Thu Aug 31 2017 Marek Polacek <polacek@redhat.com> 7.2.1-1
- update from Fedora gcc-7.2.1-1
* Mon Aug 28 2017 Marek Polacek <polacek@redhat.com> 7.1.1-7.1
- don't Provide "gcc" (#1485002)
* Thu Aug  3 2017 Jakub Jelinek <jakub@redhat.com> 7.1.1-7
- update from Fedora gcc-7.1.1-7
* Tue Jun 13 2017 Jakub Jelinek <jakub@redhat.com> 7.1.1-2.1
- new package