vapier      15/04/23 19:21:10

  Added:                05_all_gcc-spec-env.patch 09_all_default-ssp.patch
                        10_all_default-fortify-source.patch
                        11_all_default-warn-format-security.patch
                        12_all_default-warn-trampolines.patch
                        20_all_msgfmt-libstdc++-link.patch
                        25_all_alpha-mieee-default.patch
                        26_all_alpha-asm-mcpu.patch
                        29_all_arm_armv4t-default.patch
                        30_all_freebsd-pie.patch
                        34_all_ia64_note.GNU-stack.patch
                        38_all_sh_pr24836_all-archs.patch
                        42_all_superh_default-multilib.patch
                        50_all_libiberty-asprintf.patch
                        51_all_libiberty-pic.patch
                        52_all_netbsd-Bsymbolic.patch
                        53_all_libitm-no-fortify-source.patch
                        67_all_gcc-poison-system-directories.patch
                        74_all_gcc5_isl-dl.patch
                        85_all_gcc5-aarch64-pr65689.patch
                        86_all_gcc5-pie-copy-relocs-pr65780.patch
                        90_all_pr55930-dependency-tracking.patch
                        README.history
  Log:
  initial 5.1.0 patchset based on last 4.9.2 patchset

Revision  Changes    Path
1.1                  src/patchsets/gcc/5.1.0/gentoo/05_all_gcc-spec-env.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/05_all_gcc-spec-env.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/05_all_gcc-spec-env.patch?rev=1.1&content-type=text/plain

Index: 05_all_gcc-spec-env.patch
===================================================================
2013-08-22  Magnus Granberg <zo...@gentoo.org>

        * gcc/gcc.c (main): Add support for external spec file via the 
GCC_SPECS env var
        and move the process of the user specifed specs.

        This allows us to easily control pie/ssp defaults with gcc-config 
profiles.
        Original patch by Rob Holland
        Extended to support multiple entries separated by ':' by Kevin F. Quinn
        Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
        Modified to process the GCC_SPECS env var befor DRIVER_SELF_SPECS by 
Magnus Granberg

--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -6427,6 +6428,48 @@ main (int argc, char **argv)
     do_option_spec (option_default_specs[i].name,
                    option_default_specs[i].spec);
 
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32))
+  /* Add specs listed in GCC_SPECS.  Note; in the process of separating
+   * each spec listed, the string is overwritten at token boundaries
+   * (':') with '\0', an effect of strtok_r().
+   */
+  specs_file = getenv ("GCC_SPECS");
+  if (specs_file && (strlen(specs_file) > 0))
+    {
+      char *spec, *saveptr;
+      for (spec=strtok_r(specs_file,":",&saveptr);
+           spec!=NULL;
+           spec=strtok_r(NULL,":",&saveptr))
+        {
+          struct user_specs *user = (struct user_specs *)
+            xmalloc (sizeof (struct user_specs));
+          user->next = (struct user_specs *) 0;
+          user->filename = spec;
+          if (user_specs_tail)
+            user_specs_tail->next = user;
+          else
+            user_specs_head = user;
+          user_specs_tail = user;
+        }
+    }
+#endif
+  /* Process any user specified specs in the order given on the command
+   *     line.  */
+  for (struct user_specs *uptr = user_specs_head; uptr; uptr = uptr->next)
+    {
+      char *filename = find_a_file (&startfile_prefixes, uptr->filename,
+        R_OK, true);
+      read_specs (filename ? filename : uptr->filename, false, true);
+    }
+  /* Process any user self specs.  */
+  {
+    struct spec_list *sl;
+    for (sl = specs; sl; sl = sl->next)
+      if (sl->name_len == sizeof "self_spec" - 1
+          && !strcmp (sl->name, "self_spec"))
+        do_self_spec (*sl->ptr_spec);
+  }
+
   /* Process DRIVER_SELF_SPECS, adding any new options to the end
      of the command line.  */
 
@@ -6535,24 +6578,6 @@ main (int argc, char **argv)
                              PREFIX_PRIORITY_LAST, 0, 1);
     }
 
-  /* Process any user specified specs in the order given on the command
-     line.  */
-  for (struct user_specs *uptr = user_specs_head; uptr; uptr = uptr->next)
-    {
-      char *filename = find_a_file (&startfile_prefixes, uptr->filename,
-                                   R_OK, true);
-      read_specs (filename ? filename : uptr->filename, false, true);
-    }
-
-  /* Process any user self specs.  */
-  {
-    struct spec_list *sl;
-    for (sl = specs; sl; sl = sl->next)
-      if (sl->name_len == sizeof "self_spec" - 1
-         && !strcmp (sl->name, "self_spec"))
-       do_self_spec (*sl->ptr_spec);
-  }
-
   if (compare_debug)
     {
       enum save_temps save;



1.1                  src/patchsets/gcc/5.1.0/gentoo/09_all_default-ssp.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/09_all_default-ssp.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/09_all_default-ssp.patch?rev=1.1&content-type=text/plain

Index: 09_all_default-ssp.patch
===================================================================
2014-04-27  Magnus Granberg  <zo...@gentoo.org>

        Patch orig: Debian/Ubuntu
        # 484714
        We Add -fstack-protector-strong as default and change
        ssp-buffer-size

--- a/configure.ac
+++ b/configure.ac
@@ -3238,6 +3238,9 @@ case $build in
     esac ;;
 esac
 
+# Needed when we build with -fstack-protector as default.
+stage1_cflags="$stage1_cflags -fno-stack-protector"
+
 AC_SUBST(stage1_cflags)
 
 # Enable --enable-checking in stage1 of the compiler.
--- a/configure
+++ b/configure
@@ -14453,7 +14453,8 @@ case $build in
     esac ;;
 esac
 
-
+# Needed when we build with -fstack-protector as default.
+stage1_cflags="$stage1_cflags -fno-stack-protector"
 
 # Enable --enable-checking in stage1 of the compiler.
 # Check whether --enable-stage1-checking was given.
--- a/Makefile.in
+++ b/Makefile.in
@@ -362,7 +362,7 @@ BUILD_PREFIX_1 = @BUILD_PREFIX_1@
 
 # Flags to pass to stage2 and later makes.  They are defined
 # here so that they can be overridden by Makefile fragments.
-BOOT_CFLAGS= -g -O2
+BOOT_CFLAGS= -g -O2 -fno-stack-protector
 BOOT_LDFLAGS=
 BOOT_ADAFLAGS= -gnatpg
 
@@ -408,9 +408,9 @@ GNATMAKE = @GNATMAKE@
 
 CFLAGS = @CFLAGS@
 LDFLAGS = @LDFLAGS@
-LIBCFLAGS = $(CFLAGS)
+LIBCFLAGS = $(CFLAGS) -fno-stack-protector
 CXXFLAGS = @CXXFLAGS@
-LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
+LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -fno-stack-protector
 GOCFLAGS = $(CFLAGS)
 
 TFLAGS =
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -9239,6 +9251,11 @@ Like @option{-fstack-protector} but incl
 be protected --- those that have local array definitions, or have
 references to local frame addresses.
 
+NOTE: In Gentoo GCC 4.9.0 and later versions this option is enabled by default
+for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector}, 
+@option{-nostdlib}, @option{-ffreestanding}, @option{-fstack-protector}, 
+@option{-fstack-protector-strong}or @option{-fstack-protector-all}are found.
+
 @item -fsection-anchors
 @opindex fsection-anchors
 Try to reduce the number of symbolic address calculations by using
@@ -9461,6 +9465,9 @@
 The minimum size of buffers (i.e.@: arrays) that receive stack smashing
 protection when @option{-fstack-protection} is used.
 
+NOTE: In Gentoo this is change from "8" to "4", to increase
+the number of functions protected by the stack protector.
+
 @item max-jump-thread-duplication-stmts
 Maximum number of statements allowed in a block that needs to be
 duplicated when threading jumps.
--- a/gcc/cp/lang-specs.h
+++ b/gcc/cp/lang-specs.h
@@ -46,7 +46,7 @@ along with GCC; see the file COPYING3.  If not see
                %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} 
\n}\
       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed 
%{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
              %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
-       %(cc1_options) %2\
+       %(cc1_options) %(ssp_default) %2\
        %{!fsyntax-only:%{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\
         %W{o*:--output-pch=%*}}%V}}}}",
      CPLUSPLUS_CPP_SPEC, 0, 0},
@@ -57,11 +57,11 @@ along with GCC; see the file COPYING3.  If not see
                %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} 
\n}\
       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed 
%{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
              %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
-       %(cc1_options) %2\
+       %(cc1_options) %(ssp_default) %2\
        %{!fsyntax-only:%(invoke_as)}}}}",
      CPLUSPLUS_CPP_SPEC, 0, 0},
   {".ii", "@c++-cpp-output", 0, 0, 0},
   {"@c++-cpp-output",
    "%{!M:%{!MM:%{!E:\
-    cc1plus -fpreprocessed %i %(cc1_options) %2\
+    cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -651,6 +651,19 @@ proper position among the other output files.  */
 #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
 #endif
 
+#ifndef SSP_DEFAULT_SPEC
+#if defined ( TARGET_LIBC_PROVIDES_SSP ) && defined ( EFAULT_SSP )
+#define SSP_DEFAULT_SPEC "%{fno-stack-protector|fstack-protector| \
+  fstack-protector-strong|fstack-protector-all| \
+  ffreestanding|nostdlib:;:-fstack-protector-strong}"
+/* Add -fno-stack-protector for the use of gcc-specs-ssp.  */
+#define CC1_SSP_DEFAULT_SPEC "%{!fno-stack-protector:}"
+#else
+#define SSP_DEFAULT_SPEC ""
+#define CC1_SSP_DEFAULT_SPEC ""
+#endif
+#endif
+
 #ifndef LINK_SSP_SPEC
 #ifdef TARGET_LIBC_PROVIDES_SSP
 #define LINK_SSP_SPEC "%{fstack-protector:}"
@@ -771,7 +781,7 @@ proper position among the other output f
 
 static const char *asm_debug = ASM_DEBUG_SPEC;
 static const char *cpp_spec = CPP_SPEC;
-static const char *cc1_spec = CC1_SPEC;
+static const char *cc1_spec = CC1_SPEC CC1_SSP_DEFAULT_SPEC;
 static const char *cc1plus_spec = CC1PLUS_SPEC;
 static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
 static const char *link_ssp_spec = LINK_SSP_SPEC;
@@ -777,6 +785,8 @@ static const char *cc1_spec = CC1_SPEC;
 static const char *cc1plus_spec = CC1PLUS_SPEC;
 static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
 static const char *link_ssp_spec = LINK_SSP_SPEC;
+static const char *ssp_default_spec = SSP_DEFAULT_SPEC;
+static const char *cc1_ssp_default_spec = CC1_SSP_DEFAULT_SPEC;
 static const char *asm_spec = ASM_SPEC;
 static const char *asm_final_spec = ASM_FINAL_SPEC;
 static const char *link_spec = LINK_SPEC;
@@ -835,7 +844,7 @@ static const char *cpp_unique_options =
 static const char *cpp_options =
 "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
  %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\
- %{undef} %{save-temps*:-fpch-preprocess}";
+ %{undef} %{save-temps*:-fpch-preprocess} %(ssp_default)";
 
 /* This contains cpp options which are not passed when the preprocessor
    output will be used by another program.  */
@@ -1015,9 +1024,9 @@ static const struct compiler default_compilers[] =
       %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
          %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
            cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
-         %(cc1_options)}\
+         %(cc1_options) %(ssp_default)}\
       %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
-         cc1 %(cpp_unique_options) %(cc1_options)}}}\
+         cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\
       %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1},
   {"-",
    "%{!E:%e-E or -x required when input is from standard input}\
@@ -1040,7 +1049,7 @@ static const struct compiler default_compilers[] =
                     %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
   {".i", "@cpp-output", 0, 0, 0},
   {"@cpp-output",
-   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) 
%{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) 
%{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
   {".s", "@assembler", 0, 0, 0},
   {"@assembler",
    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
@@ -1267,6 +1276,8 @@ static struct spec_list static_specs[] =
   INIT_STATIC_SPEC ("cc1plus",                 &cc1plus_spec),
   INIT_STATIC_SPEC ("link_gcc_c_sequence",     &link_gcc_c_sequence_spec),
   INIT_STATIC_SPEC ("link_ssp",                        &link_ssp_spec),
+  INIT_STATIC_SPEC ("ssp_default",             &ssp_default_spec),
+  INIT_STATIC_SPEC ("cc1_ssp_default", &cc1_ssp_default_spec),
   INIT_STATIC_SPEC ("endfile",                 &endfile_spec),
   INIT_STATIC_SPEC ("link",                    &link_spec),
   INIT_STATIC_SPEC ("lib",                     &lib_spec),
--- a/gcc/objc/lang-specs.h
+++ b/gcc/objc/lang-specs.h
@@ -29,9 +29,9 @@ along with GCC; see the file COPYING3.  If not see
        %{traditional|traditional-cpp:\
 %eGNU Objective C no longer supports traditional compilation}\
        %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o 
%{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
-           cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} 
%(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\
+           cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} 
%(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\
        %{!save-temps*:%{!no-integrated-cpp:\
-           cc1obj %(cpp_unique_options) %(cc1_options) 
%{print-objc-runtime-info} %{gen-decls}}}\
+           cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) 
%{print-objc-runtime-info} %{gen-decls}}}\
         %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
   {"@objective-c-header",
      "%{E|M|MM:cc1obj -E %{traditional|traditional-cpp:-traditional-cpp}\
@@ -40,18 +40,18 @@ along with GCC; see the file COPYING3.  If not see
        %{traditional|traditional-cpp:\
 %eGNU Objective C no longer supports traditional compilation}\
        %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o 
%{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
-           cc1obj -fpreprocessed %b.mi %(cc1_options) 
%{print-objc-runtime-info} %{gen-decls}\
+           cc1obj -fpreprocessed %b.mi %(cc1_options) %(ssp_default) 
%{print-objc-runtime-info} %{gen-decls}\
                         -o %g.s %{!o*:--output-pch=%i.gch}\
                         %W{o*:--output-pch=%*}%V}\
        %{!save-temps*:%{!no-integrated-cpp:\
-           cc1obj %(cpp_unique_options) %(cc1_options) 
%{print-objc-runtime-info} %{gen-decls}\
+           cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) 
%{print-objc-runtime-info} %{gen-decls}\
                         -o %g.s %{!o*:--output-pch=%i.gch}\
                         %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0},
   {".mi", "@objective-c-cpp-output", 0, 0, 0},
   {"@objective-c-cpp-output",
-     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) 
%{print-objc-runtime-info} %{gen-decls}\
+     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) 
%{print-objc-runtime-info} %{gen-decls}\
                             %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
   {"@objc-cpp-output",
       "%nobjc-cpp-output is deprecated; please use objective-c-cpp-output 
instead\n\
-       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) 
%{print-objc-runtime-info} %{gen-decls}\
+       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) 
%{print-objc-runtime-info} %{gen-decls}\
                             %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
--- a/gcc/objcp/lang-specs.h
+++ b/gcc/objcp/lang-specs.h
@@ -36,7 +36,7 @@ along with GCC; see the file COPYING3.  If not see
                %(cpp_options) %2 -o %{save-temps*:%b.mii} 
%{!save-temps*:%g.mii} \n}\
       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed 
%{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
              %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
-       %(cc1_options) %2\
+       %(cc1_options) %(ssp_default) %2\
         -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}",
      CPLUSPLUS_CPP_SPEC, 0, 0},
   {"@objective-c++",
@@ -46,16 +46,16 @@ along with GCC; see the file COPYING3.  If not see
                %(cpp_options) %2 -o %{save-temps*:%b.mii} 
%{!save-temps*:%g.mii} \n}\
       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed 
%{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
              %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
-       %(cc1_options) %2\
+       %(cc1_options) %(ssp_default) %2\
        %{!fsyntax-only:%(invoke_as)}}}}",
      CPLUSPLUS_CPP_SPEC, 0, 0},
   {".mii", "@objective-c++-cpp-output", 0, 0, 0},
   {"@objective-c++-cpp-output",
    "%{!M:%{!MM:%{!E:\
-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
+    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
   {"@objc++-cpp-output",
    "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output 
instead\n\
     %{!M:%{!MM:%{!E:\
-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
+    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
--- a/gcc/params.def
+++ b/gcc/params.def
@@ -662,7 +662,7 @@ DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
 DEFPARAM (PARAM_SSP_BUFFER_SIZE,
          "ssp-buffer-size",
          "The lower bound for a buffer to be considered for stack smashing 
protection",
-         8, 1, 0)
+         4, 1, 0)
 
 /* When we thread through a block we have to make copies of the
    statements within the block.  Clearly for large blocks the code



1.1                  
src/patchsets/gcc/5.1.0/gentoo/10_all_default-fortify-source.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/10_all_default-fortify-source.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/10_all_default-fortify-source.patch?rev=1.1&content-type=text/plain

Index: 10_all_default-fortify-source.patch
===================================================================
Enable -D_FORTIFY_SOURCE=2 by default.


--- a/gcc/c-family/c-cppbuiltin.c
+++ b/gcc/c-family/c-cppbuiltin.c
@@ -951,6 +951,9 @@ c_cpp_builtins (cpp_reader *pfile)
   builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
   builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
 
+  /* Fortify Source enabled by default w/optimization.  */
+  cpp_define (pfile, "_FORTIFY_SOURCE=((defined __OPTIMIZE__ && __OPTIMIZE__ > 
0) ? 2 : 0)");
+
   /* Misc.  */
   if (flag_gnu89_inline)
     cpp_define (pfile, "__GNUC_GNU_INLINE__");
--- a/gcc/doc/gcc.info
+++ b/gcc/doc/gcc.info
@@ -6255,6 +6255,11 @@ find out the exact set of optimizations that are enabled 
at each level.
      Please note the warning under '-fgcse' about invoking '-O2' on
      programs that use computed gotos.
 
+     NOTE: In Gentoo, `-D_FORTIFY_SOURCE=2' is set by default, and is
+     activated when `-O' is set to 2 or higher.  This enables additional
+     compile-time and run-time checks for several libc functions.  To disable,
+     specify either `-U_FORTIFY_SOURCE' or `-D_FORTIFY_SOURCE=0'.
+
 '-O3'
      Optimize yet more.  '-O3' turns on all optimizations specified by
      '-O2' and also turns on the '-finline-functions',



1.1                  
src/patchsets/gcc/5.1.0/gentoo/11_all_default-warn-format-security.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/11_all_default-warn-format-security.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/11_all_default-warn-format-security.patch?rev=1.1&content-type=text/plain

Index: 11_all_default-warn-format-security.patch
===================================================================
Enable -Wformat and -Wformat-security by default.


--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -412,7 +412,7 @@ C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning 
LangEnabledBy(C ObjC C++ O
 Warn about format strings that are not literals
 
 Wformat-security
-C ObjC C++ ObjC++ Var(warn_format_security) Warning LangEnabledBy(C ObjC C++ 
ObjC++,Wformat=, warn_format >= 2, 0)
+C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning LangEnabledBy(C 
ObjC C++ ObjC++,Wformat=, warn_format >= 2, 0)
 Warn about possible security problems with format functions
 
 Wformat-y2k
@@ -424,7 +424,7 @@ C ObjC C++ ObjC++ Var(warn_format_zero_length) Warning 
LangEnabledBy(C ObjC C++
 Warn about zero-length formats
 
 Wformat=
-C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Warning 
LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
+C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_format) Init(1) 
Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
 Warn about printf/scanf/strftime/strfmon format string anomalies
 
 Wignored-qualifiers
--- a/gcc/doc/gcc.info
+++ b/gcc/doc/gcc.info
@@ -3451,6 +3451,8 @@ compiler warns that an unrecognized option is present.
           '-Wno-format-contains-nul', '-Wno-format-extra-args', and
           '-Wno-format-zero-length'.  '-Wformat' is enabled by '-Wall'.
 
+          This option is enabled by default in Gentoo.
+
      '-Wno-format-contains-nul'
           If '-Wformat' is specified, do not warn about format strings
           that contain NUL bytes.
@@ -3496,6 +3498,8 @@ compiler warns that an unrecognized option is present.
           future warnings may be added to '-Wformat-security' that are
           not included in '-Wformat-nonliteral'.)
 
+          This option is enabled by default in Gentoo.
+
      '-Wformat-y2k'
           If '-Wformat' is specified, also warn about 'strftime' formats
           that may yield only a two-digit year.



1.1                  
src/patchsets/gcc/5.1.0/gentoo/12_all_default-warn-trampolines.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/12_all_default-warn-trampolines.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/12_all_default-warn-trampolines.patch?rev=1.1&content-type=text/plain

Index: 12_all_default-warn-trampolines.patch
===================================================================
Enable -Wtrampolines by default.


--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -648,7 +648,7 @@ Common Var(warn_system_headers) Warning
 Do not suppress warnings from system headers
 
 Wtrampolines
-Common Var(warn_trampolines) Warning
+Common Var(warn_trampolines) Init(1) Warning
 Warn whenever a trampoline is generated
 
 Wtype-limits
--- a/gcc/doc/gcc.info
+++ b/gcc/doc/gcc.info
@@ -4021,6 +4021,8 @@ compiler warns that an unrecognized option is present.
      and thus requires the stack to be made executable in order for the
      program to work properly.
 
+     This warning is enabled by default in Gentoo.
+
 '-Wfloat-equal'
      Warn if floating-point values are used in equality comparisons.
 



1.1                  
src/patchsets/gcc/5.1.0/gentoo/20_all_msgfmt-libstdc++-link.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/20_all_msgfmt-libstdc++-link.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/20_all_msgfmt-libstdc++-link.patch?rev=1.1&content-type=text/plain

Index: 20_all_msgfmt-libstdc++-link.patch
===================================================================
Ensure that msgfmt doesn't encounter problems during gcc bootstrapping.

Solves error messages like the following:

msgfmt: /var/tmp/portage/sys-devel/gcc-4.1.2/work/build/./gcc/libgcc_s.so.1: 
version `GCC_4.2.0' not found (required by 
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/libstdc++.so.6)

The libgcc_s.so used during build doesn't satisfy the needs of the
libstdc++.so that msgfmt is linked against. On the other hand, msgfmt
is used as a stand-alone application here, and what library it uses
behind the scenes is of no concern to the gcc build process.
Therefore, simply invoking it "as usual", i.e. without any special
library path, will make it work as expected here.

2011-09-19 Martin von Gagern

References:
https://bugs.gentoo.org/372377
https://bugs.gentoo.org/295480

--- gcc-4.1.2.orig/libstdc++-v3/po/Makefile.am
+++ gcc-4.1.2/libstdc++-v3/po/Makefile.am
@@ -39,6 +39,7 @@ MSGFMT = msgfmt
 EXTRA_DIST = string_literals.cc POTFILES.in $(PACKAGE).pot $(LOCALE_IN)
 
 .po.mo:
+       env --unset=LD_LIBRARY_PATH \
        $(MSGFMT) -o $@ $<
 
 all-local: all-local-$(USE_NLS)
--- gcc-4.1.2.orig/libstdc++-v3/po/Makefile.in
+++ gcc-4.1.2/libstdc++-v3/po/Makefile.in
@@ -419,6 +419,7 @@ uninstall-am: uninstall-info-am
 
 
 .po.mo:
+       env --unset=LD_LIBRARY_PATH \
        $(MSGFMT) -o $@ $<
 
 all-local: all-local-$(USE_NLS)



1.1                  
src/patchsets/gcc/5.1.0/gentoo/25_all_alpha-mieee-default.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/25_all_alpha-mieee-default.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/25_all_alpha-mieee-default.patch?rev=1.1&content-type=text/plain

Index: 25_all_alpha-mieee-default.patch
===================================================================
Set the default behavior on alpha to use -mieee since the large majority of
time we want this (bad/weird things can happen with packages built without
it).

To satisfy those people who may not want -mieee forced on them all the time,
we also provide -mno-ieee.

Patch by Mike Frysinger <vap...@gentoo.org>

--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -96,6 +96,8 @@ along with GCC; see the file COPYING3.  If not see
   while (0)
 #endif
 
+#define CPP_SPEC "%{!no-ieee:-mieee}"
+
 /* Run-time compilation parameters selecting different hardware subsets.  */
 
 /* Which processor to schedule for. The cpu attribute defines a list that
--- a/gcc/config/alpha/alpha.opt
+++ b/gcc/config/alpha/alpha.opt
@@ -39,7 +39,7 @@ Target RejectNegative Mask(IEEE_CONFORMANT)
 Request IEEE-conformant math library routines (OSF/1)
 
 mieee
-Target Report RejectNegative Mask(IEEE)
+Target Report Mask(IEEE)
 Emit IEEE-conformant code, without inexact exceptions
 
 mieee-with-inexact



1.1                  src/patchsets/gcc/5.1.0/gentoo/26_all_alpha-asm-mcpu.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/26_all_alpha-asm-mcpu.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/26_all_alpha-asm-mcpu.patch?rev=1.1&content-type=text/plain

Index: 26_all_alpha-asm-mcpu.patch
===================================================================
https://bugs.gentoo.org/170146
http://gcc.gnu.org/ml/gcc-patches/2009-11/msg00403.html

alpha: turn -mcpu=<cpu> into -m<cpu> for assembler all the time

--- a/gcc/config/alpha/elf.h
+++ b/gcc/config/alpha/elf.h
@@ -46,7 +46,7 @@ along with GCC; see the file COPYING3.  If not see
 #define CC1_SPEC  "%{G*}"
 
 #undef  ASM_SPEC
-#define ASM_SPEC  "%{G*} %{relax:-relax} 
%{!gstabs*:-no-mdebug}%{gstabs*:-mdebug}"
+#define ASM_SPEC  "%{G*} %{relax:-relax} 
%{!gstabs*:-no-mdebug}%{gstabs*:-mdebug} %{mcpu=*:-m%*}"
 
 #undef  IDENT_ASM_OP
 #define IDENT_ASM_OP "\t.ident\t"



1.1                  
src/patchsets/gcc/5.1.0/gentoo/29_all_arm_armv4t-default.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/29_all_arm_armv4t-default.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/29_all_arm_armv4t-default.patch?rev=1.1&content-type=text/plain

Index: 29_all_arm_armv4t-default.patch
===================================================================
gcc defaults to armv5t for all targets even armv4t

http://sourceware.org/ml/crossgcc/2008-05/msg00009.html


--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -45,7 +45,7 @@
    The ARM10TDMI core is the default for armv5t, so set
    SUBTARGET_CPU_DEFAULT to achieve this.  */
 #undef  SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
 
 /* TARGET_BIG_ENDIAN_DEFAULT is set in
    config.gcc for big endian configurations.  */



1.1                  src/patchsets/gcc/5.1.0/gentoo/30_all_freebsd-pie.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/30_all_freebsd-pie.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/30_all_freebsd-pie.patch?rev=1.1&content-type=text/plain

Index: 30_all_freebsd-pie.patch
===================================================================
https://bugs.gentoo.org/415185
http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00555.html

From: Alexis Ballier <aball...@gentoo.org>
To: gcc-patc...@gcc.gnu.org
Cc: Alexis Ballier <aball...@gentoo.org>
Date: Tue, 8 May 2012 09:53:43 -0400
Subject: [PATCH] gcc/config/freebsd-spec.h: Fix building PIE executables. Link 
them with crt{begin,end}S.o and Scrt1.o which are PIC instead of 
crt{begin,end}.o and crt1.o which are not. Spec synced from gnu-user.h.

gcc/config/i386/freebsd.h: Likewise.
---
 gcc/config/freebsd-spec.h |    9 +++------
 gcc/config/i386/freebsd.h |    9 +++------
 2 files changed, 6 insertions(+), 12 deletions(-)

--- a/gcc/config/freebsd-spec.h
+++ b/gcc/config/freebsd-spec.h
@@ -64,11 +64,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If 
not, see
        before entering `main'.  */
    
 #define FBSD_STARTFILE_SPEC \
-  "%{!shared: \
-     %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
-                      %{!p:%{profile:gcrt1.o%s} \
-                        %{!profile:crt1.o%s}}}} \
-   crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
+  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
+   crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
 
 /* Provide a ENDFILE_SPEC appropriate for FreeBSD.  Here we tack on
    the magical crtend.o file (see crtstuff.c) which provides part of 
@@ -77,7 +74,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If 
not, see
        `crtn.o'.  */
 
 #define FBSD_ENDFILE_SPEC \
-  "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
+  "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
 
 /* Provide a LIB_SPEC appropriate for FreeBSD as configured and as
    required by the user-land thread model.  Before __FreeBSD_version
--- a/gcc/config/i386/freebsd.h
+++ b/gcc/config/i386/freebsd.h
@@ -67,11 +67,8 @@ along with GCC; see the file COPYING3.  If not see
    
 #undef STARTFILE_SPEC
 #define STARTFILE_SPEC \
-  "%{!shared: \
-     %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
-                      %{!p:%{profile:gcrt1.o%s} \
-                        %{!profile:crt1.o%s}}}} \
-   crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
+  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
+   crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
 
 /* Provide a ENDFILE_SPEC appropriate for FreeBSD.  Here we tack on
    the magical crtend.o file (see crtstuff.c) which provides part of 
@@ -81,7 +78,7 @@ along with GCC; see the file COPYING3.  If not see
 
 #undef ENDFILE_SPEC
 #define ENDFILE_SPEC \
-  "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
+  "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
 
 /* Provide a LINK_SPEC appropriate for FreeBSD.  Here we provide support
    for the special GCC options -static and -shared, which allow us to
-- 
1.7.8.6



1.1                  
src/patchsets/gcc/5.1.0/gentoo/34_all_ia64_note.GNU-stack.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/34_all_ia64_note.GNU-stack.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/34_all_ia64_note.GNU-stack.patch?rev=1.1&content-type=text/plain

Index: 34_all_ia64_note.GNU-stack.patch
===================================================================
http://gcc.gnu.org/PR21098


2004-09-20  Jakub Jelinek  <ja...@redhat.com>

        * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also
        on ppc64-linux.

        * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on
        ia64-linux.
        * config/ia64/crtbegin.asm: Likewise.
        * config/ia64/crtend.asm: Likewise.
        * config/ia64/crti.asm: Likewise.
        * config/ia64/crtn.asm: Likewise.

2004-05-14  Jakub Jelinek  <ja...@redhat.com>

        * config/ia64/linux.h (TARGET_ASM_FILE_END): Define.


--- a/gcc/config/ia64/linux.h
+++ b/gcc/config/ia64/linux.h
@@ -24,6 +24,8 @@ a copy of the GCC Runtime Library Exception along with this 
program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
 /* This is for -profile to use -lc_p instead of -lc.  */
 #undef CC1_SPEC
 #define CC1_SPEC "%{profile:-p} %{G*}"
--- a/gcc/config/rs6000/ppc-asm.h
+++ b/gcc/config/rs6000/ppc-asm.h
@@ -352,7 +352,7 @@ GLUE(.L,name): \
 #endif
 #endif
 
-#if defined __linux__ && !defined __powerpc64__
+#if defined __linux__
        .section .note.GNU-stack
        .previous
 #endif
--- a/libgcc/config/ia64/crtbegin.S
+++ b/libgcc/config/ia64/crtbegin.S
@@ -252,3 +252,7 @@ __do_jv_register_classes:
 .weak __cxa_finalize
 #endif
 .weak _Jv_RegisterClasses
+
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
--- a/libgcc/config/ia64/crtend.S
+++ b/libgcc/config/ia64/crtend.S
@@ -119,3 +119,6 @@ __do_global_ctors_aux:
 
        br.ret.sptk.many rp
        .endp __do_global_ctors_aux
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
--- a/libgcc/config/ia64/crti.S
+++ b/libgcc/config/ia64/crti.S
@@ -49,5 +49,8 @@ _fini:
        .save rp, r33
        mov     r33 = b0
        .body
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
 
 # end of crti.S
--- a/libgcc/config/ia64/crtn.S
+++ b/libgcc/config/ia64/crtn.S
@@ -39,5 +39,8 @@
        .restore sp
        mov     r12 = r35
        br.ret.sptk.many b0
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif
 
 # end of crtn.S
--- a/libgcc/config/ia64/lib1funcs.S
+++ b/libgcc/config/ia64/lib1funcs.S
@@ -793,3 +793,6 @@ __floattitf:
        .endp __floattitf
 #endif
 #endif
+#ifdef __linux__
+.section .note.GNU-stack; .previous
+#endif



1.1                  
src/patchsets/gcc/5.1.0/gentoo/38_all_sh_pr24836_all-archs.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/38_all_sh_pr24836_all-archs.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/38_all_sh_pr24836_all-archs.patch?rev=1.1&content-type=text/plain

Index: 38_all_sh_pr24836_all-archs.patch
===================================================================
gcc/configure doesn't handle all possible SH architectures

http://gcc.gnu.org/PR24836


--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2924,7 +2924,7 @@ foo:      .long   25
        tls_first_minor=14
        tls_as_opt="-m64 -Aesame --fatal-warnings"
        ;;
-  sh-*-* | sh[34]-*-*)
+  sh-*-* | sh[34]*-*-*)
     conftest_s='
        .section ".tdata","awT",@progbits
 foo:   .long   25
--- a/gcc/configure
+++ b/gcc/configure
@@ -22753,7 +22753,7 @@ foo:    .long   25
        tls_first_minor=14
        tls_as_opt="-m64 -Aesame --fatal-warnings"
        ;;
-  sh-*-* | sh[34]-*-*)
+  sh-*-* | sh[34]*-*-*)
     conftest_s='
        .section ".tdata","awT",@progbits
 foo:   .long   25



1.1                  
src/patchsets/gcc/5.1.0/gentoo/42_all_superh_default-multilib.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/42_all_superh_default-multilib.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/42_all_superh_default-multilib.patch?rev=1.1&content-type=text/plain

Index: 42_all_superh_default-multilib.patch
===================================================================
The gcc-3.x toolchains would contain all the targets by default.  With gcc-4,
you have to actually list out the multilibs you want or you will end up with
just one when using targets like 'sh4-linux-gnu'.

The resulting toolchain can't even build a kernel as the kernel needs to build
with the nofpu flag to be sure that no fpu ops are generated.

Here we restore the gcc-3.x behavior; the additional overhead of building all
of these multilibs by default is negligible.

https://bugs.gentoo.org/140205
https://bugs.gentoo.org/320251

--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -2455,7 +2455,7 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
        if test "$sh_multilibs" = "default" ; then
                case ${target} in
                sh64-superh-linux* | \
-               sh[1234]*)      sh_multilibs=${sh_cpu_target} ;;
+               sh[1234]*)      sh_multilibs=$(echo $(sed -n 
'/^[[:space:]]*case ${sh_multilib} in/,/)/{s:case ${sh_multilib} in::;s: | 
*:,:g;s:[\\)]::g;p}' ${srcdir}/config.gcc) | sed 's: ::g') ;;
                sh64* | sh5*)   
sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu
 ;;
                sh-superh-*)    
sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
                sh*-*-linux*)   sh_multilibs=m1,m3e,m4 ;;



1.1                  
src/patchsets/gcc/5.1.0/gentoo/50_all_libiberty-asprintf.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/50_all_libiberty-asprintf.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/50_all_libiberty-asprintf.patch?rev=1.1&content-type=text/plain

Index: 50_all_libiberty-asprintf.patch
===================================================================
2008-07-25  Magnus Granberg  <zo...@ume.nu>

        * include/libiberty.h (asprintf): Don't declare if defined as a macro

--- a/include/libiberty.h
+++ b/include/libiberty.h
@@ -609,8 +609,11 @@ extern int pwait (int, int *, int);
 /* Like sprintf but provides a pointer to malloc'd storage, which must
    be freed by the caller.  */
 
+/* asprintf may be declared as a macro by glibc with __USE_FORTIFY_LEVEL.  */
+#ifndef asprintf
 extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
 #endif
+#endif
 
 #if !HAVE_DECL_VASPRINTF
 /* Like vsprintf but provides a pointer to malloc'd storage, which



1.1                  src/patchsets/gcc/5.1.0/gentoo/51_all_libiberty-pic.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/51_all_libiberty-pic.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/51_all_libiberty-pic.patch?rev=1.1&content-type=text/plain

Index: 51_all_libiberty-pic.patch
===================================================================
--- a/libiberty/Makefile.in
+++ b/libiberty/Makefile.in
@@ -246,6 +246,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
          $(AR) $(AR_FLAGS) $(TARGETLIB) \
            $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
          $(RANLIB) $(TARGETLIB); \
+         cp $(TARGETLIB) ../ ; \
          cd ..; \
        else true; fi
 



1.1                  
src/patchsets/gcc/5.1.0/gentoo/52_all_netbsd-Bsymbolic.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/52_all_netbsd-Bsymbolic.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/52_all_netbsd-Bsymbolic.patch?rev=1.1&content-type=text/plain

Index: 52_all_netbsd-Bsymbolic.patch
===================================================================
https://bugs.gentoo.org/122698

--- a/gcc/config/netbsd-elf.h
+++ b/gcc/config/netbsd-elf.h
@@ -70,6 +70,7 @@ along with GCC; see the file COPYING3.  If not see
 #define NETBSD_LINK_SPEC_ELF \
   "%{assert*} %{R*} %{rpath*} \
    %{shared:-shared} \
+   %{symbolic:-Bsymbolic} \
    %{!shared: \
      -dc -dp \
      %{!nostdlib: \



1.1                  
src/patchsets/gcc/5.1.0/gentoo/53_all_libitm-no-fortify-source.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/53_all_libitm-no-fortify-source.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/53_all_libitm-no-fortify-source.patch?rev=1.1&content-type=text/plain

Index: 53_all_libitm-no-fortify-source.patch
===================================================================
https://bugs.gentoo.org/508852
https://gcc.gnu.org/PR61164

2014-04-27  Magnus Granberg  <zo...@gentoo.org>

        #508852
        * libitm/configure.tgt: Disable FORTIFY

--- a/libitm/configure.tgt
+++ b/libitm/configure.tgt
@@ -43,6 +43,16 @@ if test "$gcc_cv_have_tls" = yes ; then
   esac
 fi
 
+# FIXME: error: inlining failed in call to always_inline 
+# ‘int vfprintf(FILE*, const char*, __va_list_tag*)’
+# : function body can be overwritten at link time
+# Disable Fortify in libitm for now. #508852
+case "${target}" in
+    *-*-linux*)
+       XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE"
+       ;;
+esac
+
 # Map the target cpu to an ARCH sub-directory.  At the same time,
 # work out any special compilation flags as necessary.
 case "${target_cpu}" in



1.1                  
src/patchsets/gcc/5.1.0/gentoo/67_all_gcc-poison-system-directories.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/67_all_gcc-poison-system-directories.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/67_all_gcc-poison-system-directories.patch?rev=1.1&content-type=text/plain

Index: 67_all_gcc-poison-system-directories.patch
===================================================================
http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-devtools/gcc/gcc-4.9/0016-gcc-poison-system-directories.patch

From: Khem Raj <raj.k...@gmail.com>
Date: Fri, 29 Mar 2013 08:59:00 +0400
Subject: [PATCH 16/35] gcc: poison-system-directories

Signed-off-by: Khem Raj <raj.k...@gmail.com>

Upstream-Status: Inappropriate [distribution: codesourcery]
---
 gcc/Makefile.in     |    2 +-
 gcc/common.opt      |    4 ++++
 gcc/config.in       |    6 ++++++
 gcc/configure       |   20 ++++++++++++++++++--
 gcc/configure.ac    |   10 ++++++++++
 gcc/doc/invoke.texi |    9 +++++++++
 gcc/gcc.c           |    2 ++
 gcc/incpath.c       |   19 +++++++++++++++++++
 8 files changed, 69 insertions(+), 3 deletions(-)

--- gcc-4.9-20140316.orig/gcc/common.opt
+++ gcc-4.9-20140316/gcc/common.opt
@@ -603,6 +603,10 @@ Wpedantic
 Common Var(pedantic) Warning
 Issue warnings needed for strict compliance to the standard
 
+Wpoison-system-directories
+Common Var(flag_poison_system_directories) Init(1) Warning
+Warn for -I and -L options using system directories if cross compiling
+
 Wshadow
 Common Var(warn_shadow) Warning
 Warn when one local variable shadows another
--- gcc-4.9-20140316.orig/gcc/configure.ac
+++ gcc-4.9-20140316/gcc/configure.ac
@@ -5366,6 +5366,16 @@ AC_ARG_ENABLE(version-specific-runtime-l
                 [specify that runtime libraries should be
                  installed in a compiler-specific directory])])
 
+AC_ARG_ENABLE([poison-system-directories],
+             AS_HELP_STRING([--enable-poison-system-directories],
+                            [warn for use of native system header 
directories]),,
+             [enable_poison_system_directories=no])
+if test "x${enable_poison_system_directories}" = "xyes"; then
+  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
+           [1],
+           [Define to warn for use of native system header directories])
+fi
+
 # Substitute configuration variables
 AC_SUBST(subdirs)
 AC_SUBST(srcdir)
--- gcc-4.9-20140316.orig/gcc/configure
+++ gcc-4.9-20140316/gcc/configure
@@ -928,6 +928,7 @@ with_system_zlib
 enable_maintainer_mode
 enable_link_mutex
 enable_version_specific_runtime_libs
+enable_poison_system_directories
 enable_plugin
 enable_host_shared
 enable_libquadmath_support
@@ -1648,6 +1649,8 @@ Optional Features:
   --enable-version-specific-runtime-libs
                           specify that runtime libraries should be installed
                           in a compiler-specific directory
+  --enable-poison-system-directories
+                          warn for use of native system header directories
   --enable-plugin         enable plugin support
   --enable-host-shared    build host code as shared libraries
   --disable-libquadmath-support
@@ -27702,6 +27705,19 @@ if test "${enable_version_specific_runti
 fi
 
 
+# Check whether --enable-poison-system-directories was given.
+if test "${enable_poison_system_directories+set}" = set; then :
+  enableval=$enable_poison_system_directories;
+else
+  enable_poison_system_directories=no
+fi
+
+if test "x${enable_poison_system_directories}" = "xyes"; then
+
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
+
+fi
+
 # Substitute configuration variables
 
 
--- gcc-4.9-20140316.orig/gcc/config.in
+++ gcc-4.9-20140316/gcc/config.in
@@ -138,6 +138,12 @@
 #endif
 
 
+/* Define to warn for use of native system header directories */
+#ifndef USED_FOR_TARGET
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
+#endif
+
+
 /* Define if you want all operations on RTL (the basic data structure of the
    optimizer and back end) to be checked for dynamic type safety at runtime.
    This is quite expensive. */
--- gcc-4.9-20140316.orig/gcc/gcc.c
+++ gcc-4.9-20140316/gcc/gcc.c
@@ -764,6 +764,8 @@ proper position among the other output f
    "%{fuse-ld=*:-fuse-ld=%*}\
     %X %{o*} %{e*} %{N} %{n} %{r}\
     %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} " 
VTABLE_VERIFICATION_SPEC " \
+    %{Wno-poison-system-directories:--no-poison-system-directories}\
+    %{Werror=poison-system-directories:--error-poison-system-directories}\
     %{static:} %{L*} %(mfwrap) %(link_libgcc) " SANITIZER_EARLY_SPEC " %o\
     %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\
     %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\
--- gcc-4.9-20140316.orig/gcc/incpath.c
+++ gcc-4.9-20140316/gcc/incpath.c
@@ -28,6 +28,7 @@
 #include "intl.h"
 #include "incpath.h"
 #include "cppdefault.h"
+#include "diagnostic-core.h"
 
 /* Microsoft Windows does not natively support inodes.
    VMS has non-numeric inodes.  */
@@ -382,6 +383,24 @@ merge_include_chains (const char *sysroo
        }
       fprintf (stderr, _("End of search list.\n"));
     }
+
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
+  if (flag_poison_system_directories)
+    {
+       struct cpp_dir *p;
+
+       for (p = heads[QUOTE]; p; p = p->next)
+         {
+          if ((!strncmp (p->name, "/usr/include", 12))
+              || (!strncmp (p->name, "/usr/local/include", 18))
+              || (!strncmp (p->name, "/usr/X11R6/include", 18)))
+            warning (OPT_Wpoison_system_directories,
+                     "include location \"%s\" is unsafe for "
+                     "cross-compilation",
+                     p->name);
+         }
+    }
+#endif
 }
 
 /* Use given -I paths for #include "..." but not #include <...>, and
--- a/gcc/doc/gcc.info
+++ b/gcc/doc/gcc.info
@@ -558,6 +558,7 @@ _Warning Options_
           -Woverlength-strings  -Wpacked  -Wpacked-bitfield-compat  -Wpadded
           -Wparentheses  -Wpedantic-ms-format -Wno-pedantic-ms-format
           -Wpointer-arith  -Wno-pointer-to-int-cast
+          -Wno-poison-system-directories
           -Wredundant-decls  -Wno-return-local-addr
           -Wreturn-type  -Wsequence-point  -Wshadow
           -Wsign-compare  -Wsign-conversion -Wfloat-conversion
@@ -4010,6 +4011,13 @@ compiler warns that an unrecognized option is present.
      pragmas in system headers--for that, '-Wunknown-pragmas' must also
      be used.
 
+'-Wno-poison-system-directories'
+     Do not warn for @option{-I} or @option{-L} options using system
+     directories such as @file{/usr/include} when cross compiling.  This
+     option is intended for use in chroot environments when such
+     directories contain the correct headers and libraries for the target
+     system rather than the host.
+
 '-Wtrampolines'
      Warn about trampolines generated for pointers to nested functions.
 



1.1                  src/patchsets/gcc/5.1.0/gentoo/74_all_gcc5_isl-dl.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/74_all_gcc5_isl-dl.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/74_all_gcc5_isl-dl.patch?rev=1.1&content-type=text/plain

Index: 74_all_gcc5_isl-dl.patch
===================================================================
dlopen cloog-isl library rather than link to it directly.  This prevents
cloog upgrades that change the soname from breaking the compiler.

http://pkgs.fedoraproject.org/cgit/gcc.git/tree/gcc5-isl-dl.patch


In FreeBSD dlopen is part of libc so we can't just hardcode -ldl.
We abuse the existing plugin check logic to pull out that info.

--- gcc/Makefile.in.jj  2012-12-13 17:09:20.000000000 +0100
+++ gcc/Makefile.in     2012-12-14 11:45:22.585670055 +0100
@@ -1006,7 +1006,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),@DL_LIB@) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
        $(ZLIB)
 # Any system libraries needed just for GNAT.
 SYSLIBS = @GNAT_LIBEXC@
@@ -2050,6 +2050,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/configure
+++ gcc/configure
@@ -604,6 +604,7 @@ PICFLAG
 enable_host_shared
 enable_plugin
 pluginlibs
+DL_LIB
 ISLINC
 ISLLIBS
 GMPINC
@@ -28285,6 +28286,7 @@ $as_echo "unable to check" >&6; }
      fi
 
      # Check -ldl
+     DL_LIB=
      saved_LIBS="$LIBS"
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing 
dlopen" >&5
 $as_echo_n "checking for library containing dlopen... " >&6; }
@@ -28344,6 +28346,7 @@ fi
 
      if test x"$ac_cv_search_dlopen" = x"-ldl"; then
        pluginlibs="$pluginlibs -ldl"
+       DL_LIB=$ac_cv_search_dlopen
      fi
      LIBS="$saved_LIBS"
 
--- gcc/graphite-poly.h.jj      2012-12-13 11:31:27.000000000 +0100
+++ gcc/graphite-poly.h 2012-12-14 13:41:41.970800726 +0100
@@ -22,6 +22,478 @@ along with GCC; see the file COPYING3.
 #ifndef GCC_GRAPHITE_POLY_H
 #define GCC_GRAPHITE_POLY_H
 
+#include <isl/aff.h>
+#include <isl/schedule.h>
+#include <isl/ilp.h>
+#include <isl/flow.h>
+#include <isl/options.h>
+#include <isl/ast.h>
+#include <isl/ast_build.h>
+#include <isl/val_gmp.h>
+#include <dlfcn.h>
+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+#define DYNSYM_ZERO_DISTANCE DYNSYM (isl_band_member_is_coincident)
+#else
+#define DYNSYM_ZERO_DISTANCE DYNSYM (isl_band_member_is_zero_distance)
+#endif
+#define DYNSYMS \
+  DYNSYM (isl_aff_add_coefficient_si); \
+  DYNSYM (isl_aff_free); \
+  DYNSYM (isl_aff_get_space); \
+  DYNSYM (isl_aff_set_coefficient_si); \
+  DYNSYM (isl_aff_set_constant_si); \
+  DYNSYM (isl_aff_zero_on_domain); \
+  DYNSYM (isl_band_free); \
+  DYNSYM (isl_band_get_children); \
+  DYNSYM (isl_band_get_partial_schedule); \
+  DYNSYM (isl_band_has_children); \
+  DYNSYM (isl_band_list_free); \
+  DYNSYM (isl_band_list_get_band); \
+  DYNSYM (isl_band_list_get_ctx); \
+  DYNSYM (isl_band_list_n_band); \
+  DYNSYM_ZERO_DISTANCE; \
+  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_fuse); \
+  DYNSYM (isl_options_set_schedule_max_constant_term); \
+  DYNSYM (isl_options_set_schedule_maximize_band_depth); \
+  DYNSYM (isl_printer_free); \
+  DYNSYM (isl_printer_print_aff); \
+  DYNSYM (isl_printer_print_constraint); \
+  DYNSYM (isl_printer_print_map); \
+  DYNSYM (isl_printer_print_set); \
+  DYNSYM (isl_printer_to_file); \
+  DYNSYM (isl_pw_aff_add); \
+  DYNSYM (isl_pw_aff_alloc); \
+  DYNSYM (isl_pw_aff_copy); \
+  DYNSYM (isl_pw_aff_eq_set); \
+  DYNSYM (isl_pw_aff_free); \
+  DYNSYM (isl_pw_aff_from_aff); \
+  DYNSYM (isl_pw_aff_ge_set); \
+  DYNSYM (isl_pw_aff_gt_set); \
+  DYNSYM (isl_pw_aff_is_cst); \
+  DYNSYM (isl_pw_aff_le_set); \
+  DYNSYM (isl_pw_aff_lt_set); \
+  DYNSYM (isl_pw_aff_mul); \
+  DYNSYM (isl_pw_aff_ne_set); \
+  DYNSYM (isl_pw_aff_nonneg_set); \
+  DYNSYM (isl_pw_aff_set_tuple_id); \
+  DYNSYM (isl_pw_aff_sub); \
+  DYNSYM (isl_pw_aff_zero_set); \
+  DYNSYM (isl_schedule_free); \
+  DYNSYM (isl_schedule_get_band_forest); \
+  DYNSYM (isl_set_add_constraint); \
+  DYNSYM (isl_set_add_dims); \
+  DYNSYM (isl_set_apply); \
+  DYNSYM (isl_set_coalesce); \
+  DYNSYM (isl_set_copy); \
+  DYNSYM (isl_set_dim); \
+  DYNSYM (isl_set_fix_si); \
+  DYNSYM (isl_set_free); \
+  DYNSYM (isl_set_get_space); \
+  DYNSYM (isl_set_get_tuple_id); \
+  DYNSYM (isl_set_intersect); \
+  DYNSYM (isl_set_is_empty); \
+  DYNSYM (isl_set_n_dim); \
+  DYNSYM (isl_set_nat_universe); \
+  DYNSYM (isl_set_project_out); \
+  DYNSYM (isl_set_set_tuple_id); \
+  DYNSYM (isl_set_universe); \
+  DYNSYM (isl_space_add_dims); \
+  DYNSYM (isl_space_alloc); \
+  DYNSYM (isl_space_copy); \
+  DYNSYM (isl_space_dim); \
+  DYNSYM (isl_space_domain); \
+  DYNSYM (isl_space_find_dim_by_id); \
+  DYNSYM (isl_space_free); \
+  DYNSYM (isl_space_from_domain); \
+  DYNSYM (isl_space_get_tuple_id); \
+  DYNSYM (isl_space_params_alloc); \
+  DYNSYM (isl_space_range); \
+  DYNSYM (isl_space_set_alloc); \
+  DYNSYM (isl_space_set_dim_id); \
+  DYNSYM (isl_space_set_tuple_id); \
+  DYNSYM (isl_union_map_add_map); \
+  DYNSYM (isl_union_map_align_params); \
+  DYNSYM (isl_union_map_apply_domain); \
+  DYNSYM (isl_union_map_apply_range); \
+  DYNSYM (isl_union_map_compute_flow); \
+  DYNSYM (isl_union_map_copy); \
+  DYNSYM (isl_union_map_empty); \
+  DYNSYM (isl_union_map_flat_range_product); \
+  DYNSYM (isl_union_map_foreach_map); \
+  DYNSYM (isl_union_map_free); \
+  DYNSYM (isl_union_map_from_map); \
+  DYNSYM (isl_union_map_get_ctx); \
+  DYNSYM (isl_union_map_get_space); \
+  DYNSYM (isl_union_map_gist_domain); \
+  DYNSYM (isl_union_map_gist_range); \
+  DYNSYM (isl_union_map_intersect_domain); \
+  DYNSYM (isl_union_map_is_empty); \
+  DYNSYM (isl_union_map_subtract); \
+  DYNSYM (isl_union_map_union); \
+  DYNSYM (isl_union_set_add_set); \
+  DYNSYM (isl_union_set_compute_schedule); \
+  DYNSYM (isl_union_set_copy); \
+  DYNSYM (isl_union_set_empty); \
+  DYNSYM (isl_union_set_from_set); \
+  DYNSYM (isl_aff_add_constant_val); \
+  DYNSYM (isl_aff_get_coefficient_val); \
+  DYNSYM (isl_aff_get_ctx); \
+  DYNSYM (isl_aff_mod_val); \
+  DYNSYM (isl_ast_build_ast_from_schedule); \
+  DYNSYM (isl_ast_build_free); \
+  DYNSYM (isl_ast_build_from_context); \
+  DYNSYM (isl_ast_build_get_ctx); \
+  DYNSYM (isl_ast_build_get_schedule); \
+  DYNSYM (isl_ast_build_get_schedule_space); \
+  DYNSYM (isl_ast_build_set_before_each_for); \
+  DYNSYM (isl_ast_build_set_options); \
+  DYNSYM (isl_ast_expr_free); \
+  DYNSYM (isl_ast_expr_from_val); \
+  DYNSYM (isl_ast_expr_get_ctx); \
+  DYNSYM (isl_ast_expr_get_id); \
+  DYNSYM (isl_ast_expr_get_op_arg); \
+  DYNSYM (isl_ast_expr_get_op_n_arg); \
+  DYNSYM (isl_ast_expr_get_op_type); \
+  DYNSYM (isl_ast_expr_get_type); \
+  DYNSYM (isl_ast_expr_get_val); \
+  DYNSYM (isl_ast_expr_sub); \
+  DYNSYM (isl_ast_node_block_get_children); \
+  DYNSYM (isl_ast_node_for_get_body); \
+  DYNSYM (isl_ast_node_for_get_cond); \
+  DYNSYM (isl_ast_node_for_get_inc); \
+  DYNSYM (isl_ast_node_for_get_init); \
+  DYNSYM (isl_ast_node_for_get_iterator); \
+  DYNSYM (isl_ast_node_free); \
+  DYNSYM (isl_ast_node_get_annotation); \
+  DYNSYM (isl_ast_node_get_type); \
+  DYNSYM (isl_ast_node_if_get_cond); \
+  DYNSYM (isl_ast_node_if_get_else); \
+  DYNSYM (isl_ast_node_if_get_then); \
+  DYNSYM (isl_ast_node_list_free); \
+  DYNSYM (isl_ast_node_list_get_ast_node); \
+  DYNSYM (isl_ast_node_list_n_ast_node); \
+  DYNSYM (isl_ast_node_user_get_expr); \
+  DYNSYM (isl_constraint_set_coefficient_val); \
+  DYNSYM (isl_constraint_set_constant_val); \
+  DYNSYM (isl_id_get_user); \
+  DYNSYM (isl_local_space_get_ctx); \
+  DYNSYM (isl_map_fix_val); \
+  DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
+  DYNSYM (isl_printer_print_ast_node); \
+  DYNSYM (isl_printer_print_str); \
+  DYNSYM (isl_printer_set_output_format); \
+  DYNSYM (isl_pw_aff_mod_val); \
+  DYNSYM (isl_schedule_constraints_compute_schedule); \
+  DYNSYM (isl_schedule_constraints_on_domain); \
+  DYNSYM (isl_schedule_constraints_set_coincidence); \
+  DYNSYM (isl_schedule_constraints_set_proximity); \
+  DYNSYM (isl_schedule_constraints_set_validity); \
+  DYNSYM (isl_set_get_dim_id); \
+  DYNSYM (isl_set_max_val); \
+  DYNSYM (isl_set_min_val); \
+  DYNSYM (isl_set_params); \
+  DYNSYM (isl_space_align_params); \
+  DYNSYM (isl_space_map_from_domain_and_range); \
+  DYNSYM (isl_space_set_tuple_name); \
+  DYNSYM (isl_space_wrap); \
+  DYNSYM (isl_union_map_from_domain_and_range); \
+  DYNSYM (isl_union_map_range); \
+  DYNSYM (isl_union_set_union); \
+  DYNSYM (isl_union_set_universe); \
+  DYNSYM (isl_val_2exp); \
+  DYNSYM (isl_val_add_ui); \
+  DYNSYM (isl_val_copy); \
+  DYNSYM (isl_val_free); \
+  DYNSYM (isl_val_get_num_gmp); \
+  DYNSYM (isl_val_int_from_gmp); \
+  DYNSYM (isl_val_int_from_si); \
+  DYNSYM (isl_val_int_from_ui); \
+  DYNSYM (isl_val_mul); \
+  DYNSYM (isl_val_neg); \
+  DYNSYM (isl_val_sub);
+
+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)
+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
+#define isl_band_member_is_coincident 
(*isl_pointers__.p_isl_band_member_is_coincident)
+#else
+#define isl_band_member_is_zero_distance 
(*isl_pointers__.p_isl_band_member_is_zero_distance)
+#endif
+#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_fuse 
(*isl_pointers__.p_isl_options_set_schedule_fuse)
+#define isl_options_set_schedule_max_constant_term 
(*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
+#define isl_options_set_schedule_maximize_band_depth 
(*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
+#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
+#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
+#define isl_printer_print_constraint 
(*isl_pointers__.p_isl_printer_print_constraint)
+#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
+#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
+#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
+#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
+#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
+#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
+#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
+#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
+#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
+#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
+#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
+#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
+#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
+#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
+#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
+#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
+#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
+#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
+#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
+#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
+#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
+#define isl_schedule_get_band_forest 
(*isl_pointers__.p_isl_schedule_get_band_forest)
+#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
+#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
+#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
+#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
+#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
+#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
+#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
+#define isl_set_free (*isl_pointers__.p_isl_set_free)
+#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
+#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
+#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
+#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
+#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
+#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
+#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
+#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
+#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
+#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
+#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
+#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
+#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
+#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
+#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
+#define isl_space_free (*isl_pointers__.p_isl_space_free)
+#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
+#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
+#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
+#define isl_space_range (*isl_pointers__.p_isl_space_range)
+#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
+#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
+#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
+#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
+#define isl_union_map_align_params 
(*isl_pointers__.p_isl_union_map_align_params)
+#define isl_union_map_apply_domain 
(*isl_pointers__.p_isl_union_map_apply_domain)
+#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
+#define isl_union_map_compute_flow 
(*isl_pointers__.p_isl_union_map_compute_flow)
+#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
+#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
+#define isl_union_map_flat_range_product 
(*isl_pointers__.p_isl_union_map_flat_range_product)
+#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
+#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
+#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
+#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
+#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
+#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
+#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
+#define isl_union_map_intersect_domain 
(*isl_pointers__.p_isl_union_map_intersect_domain)
+#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
+#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
+#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
+#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
+#define isl_union_set_compute_schedule 
(*isl_pointers__.p_isl_union_set_compute_schedule)
+#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
+#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
+#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
+#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
+#define isl_aff_get_coefficient_val 
(*isl_pointers__.p_isl_aff_get_coefficient_val)
+#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
+#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
+#define isl_ast_build_ast_from_schedule 
(*isl_pointers__.p_isl_ast_build_ast_from_schedule)
+#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
+#define isl_ast_build_from_context 
(*isl_pointers__.p_isl_ast_build_from_context)
+#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
+#define isl_ast_build_get_schedule 
(*isl_pointers__.p_isl_ast_build_get_schedule)
+#define isl_ast_build_get_schedule_space 
(*isl_pointers__.p_isl_ast_build_get_schedule_space)
+#define isl_ast_build_set_before_each_for 
(*isl_pointers__.p_isl_ast_build_set_before_each_for)
+#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
+#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
+#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
+#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
+#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
+#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
+#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
+#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
+#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
+#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
+#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
+#define isl_ast_node_block_get_children 
(*isl_pointers__.p_isl_ast_node_block_get_children)
+#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
+#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
+#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
+#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
+#define isl_ast_node_for_get_iterator 
(*isl_pointers__.p_isl_ast_node_for_get_iterator)
+#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
+#define isl_ast_node_get_annotation 
(*isl_pointers__.p_isl_ast_node_get_annotation)
+#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
+#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
+#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
+#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
+#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
+#define isl_ast_node_list_get_ast_node 
(*isl_pointers__.p_isl_ast_node_list_get_ast_node)
+#define isl_ast_node_list_n_ast_node 
(*isl_pointers__.p_isl_ast_node_list_n_ast_node)
+#define isl_ast_node_user_get_expr 
(*isl_pointers__.p_isl_ast_node_user_get_expr)
+#define isl_constraint_set_coefficient_val 
(*isl_pointers__.p_isl_constraint_set_coefficient_val)
+#define isl_constraint_set_constant_val 
(*isl_pointers__.p_isl_constraint_set_constant_val)
+#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
+#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
+#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
+#define isl_options_set_ast_build_atomic_upper_bound 
(*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
+#define isl_printer_print_ast_node 
(*isl_pointers__.p_isl_printer_print_ast_node)
+#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
+#define isl_printer_set_output_format 
(*isl_pointers__.p_isl_printer_set_output_format)
+#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
+#define isl_schedule_constraints_compute_schedule 
(*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
+#define isl_schedule_constraints_on_domain 
(*isl_pointers__.p_isl_schedule_constraints_on_domain)
+#define isl_schedule_constraints_set_coincidence 
(*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
+#define isl_schedule_constraints_set_proximity 
(*isl_pointers__.p_isl_schedule_constraints_set_proximity)
+#define isl_schedule_constraints_set_validity 
(*isl_pointers__.p_isl_schedule_constraints_set_validity)
+#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
+#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
+#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
+#define isl_set_params (*isl_pointers__.p_isl_set_params)
+#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
+#define isl_space_map_from_domain_and_range 
(*isl_pointers__.p_isl_space_map_from_domain_and_range)
+#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
+#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
+#define isl_union_map_from_domain_and_range 
(*isl_pointers__.p_isl_union_map_from_domain_and_range)
+#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
+#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
+#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
+#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
+#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
+#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
+#define isl_val_free (*isl_pointers__.p_isl_val_free)
+#define isl_val_get_num_gmp (*isl_pointers__.p_isl_val_get_num_gmp)
+#define isl_val_int_from_gmp (*isl_pointers__.p_isl_val_int_from_gmp)
+#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
+#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
+#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
+#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
+#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
+
 typedef struct poly_dr *poly_dr_p;
 
 typedef struct poly_bb *poly_bb_p;
--- gcc/graphite.c.jj   2012-12-13 11:31:00.000000000 +0100
+++ gcc/graphite.c      2012-12-14 13:40:44.155136961 +0100
@@ -90,6 +90,34 @@ along with GCC; see the file COPYING3.
 #include "graphite-isl-ast-to-gimple.h"
 #include "graphite-sese-to-poly.h"
 
+__typeof (isl_pointers__) isl_pointers__;
+
+static bool
+init_isl_pointers (void)
+{
+  void *h;
+
+  if (isl_pointers__.inited)
+    return isl_pointers__.h != NULL;
+  h = dlopen ("libisl.so.13", RTLD_LAZY);
+  isl_pointers__.h = h;
+  if (h == NULL)
+    return false;
+#define DYNSYM(x) \
+  do \
+    { \
+      union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
+      u.q = dlsym (h, #x); \
+      if (u.q == NULL) \
+       return false; \
+      isl_pointers__.p_##x = u.p; \
+    } \
+  while (0)
+  DYNSYMS
+#undef DYNSYM
+  return true;
+}
+
 /* Print global statistics to FILE.  */
 
 static void
@@ -285,6 +313,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))



1.1                  
src/patchsets/gcc/5.1.0/gentoo/85_all_gcc5-aarch64-pr65689.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/85_all_gcc5-aarch64-pr65689.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/85_all_gcc5-aarch64-pr65689.patch?rev=1.1&content-type=text/plain

Index: 85_all_gcc5-aarch64-pr65689.patch
===================================================================
https://gcc.gnu.org/PR65689

2015-04-17  Jakub Jelinek  <ja...@redhat.com>

        PR target/65689
        * genpreds.c (struct constraint_data): Add maybe_allows_reg and
        maybe_allows_mem bitfields.
        (maybe_allows_none_start, maybe_allows_none_end,
        maybe_allows_reg_start, maybe_allows_reg_end, maybe_allows_mem_start,
        maybe_allows_mem_end): New variables.
        (compute_maybe_allows): New function.
        (add_constraint): Use it to initialize maybe_allows_reg and
        maybe_allows_mem fields.
        (choose_enum_order): Sort the non-is_register/is_const_int/is_memory/
        is_address constraints such that those that allow neither mem nor
        reg come first, then those that only allow reg but not mem, then
        those that only allow mem but not reg, then the rest.
        (write_allows_reg_mem_function): New function.
        (write_tm_preds_h): Call it.
        * stmt.c (parse_output_constraint, parse_input_constraint): Use
        the generated insn_extra_constraint_allows_reg_mem function
        instead of always setting *allows_reg = true; *allows_mem = true;
        for unknown extra constraints.

        * gcc.target/aarch64/c-output-template-4.c: New test.

--- gcc/genpreds.c.jj   2015-04-08 18:23:50.643556230 +0200
+++ gcc/genpreds.c      2015-04-17 17:44:23.097650110 +0200
@@ -640,12 +640,14 @@ struct constraint_data
   const char *regclass;  /* for register constraints */
   rtx exp;               /* for other constraints */
   unsigned int lineno;   /* line of definition */
-  unsigned int is_register  : 1;
-  unsigned int is_const_int : 1;
-  unsigned int is_const_dbl : 1;
-  unsigned int is_extra     : 1;
-  unsigned int is_memory    : 1;
-  unsigned int is_address   : 1;
+  unsigned int is_register     : 1;
+  unsigned int is_const_int    : 1;
+  unsigned int is_const_dbl    : 1;
+  unsigned int is_extra                : 1;
+  unsigned int is_memory       : 1;
+  unsigned int is_address      : 1;
+  unsigned int maybe_allows_reg : 1;
+  unsigned int maybe_allows_mem : 1;
 };
 
 /* Overview of all constraints beginning with a given letter.  */
@@ -691,6 +693,9 @@ static unsigned int satisfied_start;
 static unsigned int const_int_start, const_int_end;
 static unsigned int memory_start, memory_end;
 static unsigned int address_start, address_end;
+static unsigned int maybe_allows_none_start, maybe_allows_none_end;
+static unsigned int maybe_allows_reg_start, maybe_allows_reg_end;
+static unsigned int maybe_allows_mem_start, maybe_allows_mem_end;
 
 /* Convert NAME, which contains angle brackets and/or underscores, to
    a string that can be used as part of a C identifier.  The string
@@ -711,6 +716,34 @@ mangle (const char *name)
   return XOBFINISH (rtl_obstack, const char *);
 }
 
+/* Return a bitmask, bit 1 if EXP maybe allows a REG/SUBREG, 2 if EXP
+   maybe allows a MEM.  Bits should be clear only when we are sure it
+   will not allow a REG/SUBREG or a MEM.  */
+static int
+compute_maybe_allows (rtx exp)
+{
+  switch (GET_CODE (exp))
+    {
+    case IF_THEN_ELSE:
+      /* Conservative answer is like IOR, of the THEN and ELSE branches.  */
+      return compute_maybe_allows (XEXP (exp, 1))
+            | compute_maybe_allows (XEXP (exp, 2));
+    case AND:
+      return compute_maybe_allows (XEXP (exp, 0))
+            & compute_maybe_allows (XEXP (exp, 1));
+    case IOR:
+      return compute_maybe_allows (XEXP (exp, 0))
+            | compute_maybe_allows (XEXP (exp, 1));
+    case MATCH_CODE:
+      if (*XSTR (exp, 1) == '\0')
+       return (strstr (XSTR (exp, 0), "reg") != NULL ? 1 : 0)
+              | (strstr (XSTR (exp, 0), "mem") != NULL ? 2 : 0);
+      /* FALLTHRU */
+    default:
+      return 3;
+    }
+}
+
 /* Add one constraint, of any sort, to the tables.  NAME is its name;
    REGCLASS is the register class, if any; EXP is the expression to
    test, if any;  IS_MEMORY and IS_ADDRESS indicate memory and address
@@ -866,6 +899,11 @@ add_constraint (const char *name, const
   c->is_extra = !(regclass || is_const_int || is_const_dbl);
   c->is_memory = is_memory;
   c->is_address = is_address;
+  int maybe_allows = 3;
+  if (exp)
+    maybe_allows = compute_maybe_allows (exp);
+  c->maybe_allows_reg = (maybe_allows & 1) != 0;
+  c->maybe_allows_mem = (maybe_allows & 2) != 0;
 
   c->next_this_letter = *slot;
   *slot = c;
@@ -940,8 +978,30 @@ choose_enum_order (void)
       enum_order[next++] = c;
   address_end = next;
 
+  maybe_allows_none_start = next;
+  FOR_ALL_CONSTRAINTS (c)
+    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
+       && !c->maybe_allows_reg && !c->maybe_allows_mem)
+      enum_order[next++] = c;
+  maybe_allows_none_end = next;
+
+  maybe_allows_reg_start = next;
+  FOR_ALL_CONSTRAINTS (c)
+    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
+       && c->maybe_allows_reg && !c->maybe_allows_mem)
+      enum_order[next++] = c;
+  maybe_allows_reg_end = next;
+
+  maybe_allows_mem_start = next;
+  FOR_ALL_CONSTRAINTS (c)
+    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
+       && !c->maybe_allows_reg && c->maybe_allows_mem)
+      enum_order[next++] = c;
+  maybe_allows_mem_end = next;
+
   FOR_ALL_CONSTRAINTS (c)
-    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address)
+    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
+       && c->maybe_allows_reg && c->maybe_allows_mem)
       enum_order[next++] = c;
   gcc_assert (next == num_constraints);
 }
@@ -1229,6 +1289,41 @@ write_range_function (const char *name,
            "}\n\n", name);
 }
 
+/* Write a definition for insn_extra_constraint_allows_reg_mem function.  */
+static void
+write_allows_reg_mem_function (void)
+{
+  printf ("static inline void\n"
+         "insn_extra_constraint_allows_reg_mem (enum constraint_num c,\n"
+         "\t\t\t\t      bool *allows_reg, bool *allows_mem)\n"
+         "{\n");
+  if (maybe_allows_none_start != maybe_allows_none_end)
+    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
+           "    return;\n",
+           enum_order[maybe_allows_none_start]->c_name,
+           enum_order[maybe_allows_none_end - 1]->c_name);
+  if (maybe_allows_reg_start != maybe_allows_reg_end)
+    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
+           "    {\n"
+           "      *allows_reg = true;\n"
+           "      return;\n"
+           "    }\n",
+           enum_order[maybe_allows_reg_start]->c_name,
+           enum_order[maybe_allows_reg_end - 1]->c_name);
+  if (maybe_allows_mem_start != maybe_allows_mem_end)
+    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
+           "    {\n"
+           "      *allows_mem = true;\n"
+           "      return;\n"
+           "    }\n",
+           enum_order[maybe_allows_mem_start]->c_name,
+           enum_order[maybe_allows_mem_end - 1]->c_name);
+  printf ("  (void) c;\n"
+         "  *allows_reg = true;\n"
+         "  *allows_mem = true;\n"
+         "}\n\n");
+}
+
 /* VEC is a list of key/value pairs, with the keys being lower bounds
    of a range.  Output a decision tree that handles the keys covered by
    [VEC[START], VEC[END]), returning FALLBACK for keys lower then VEC[START]'s.
@@ -1326,6 +1421,7 @@ write_tm_preds_h (void)
                            memory_start, memory_end);
       write_range_function ("insn_extra_address_constraint",
                            address_start, address_end);
+      write_allows_reg_mem_function ();
 
       if (constraint_max_namelen > 1)
         {
--- gcc/stmt.c.jj       2015-04-08 18:23:50.660555956 +0200
+++ gcc/stmt.c  2015-04-17 17:36:50.623044548 +0200
@@ -342,13 +342,7 @@ parse_output_constraint (const char **co
        else if (insn_extra_memory_constraint (cn))
          *allows_mem = true;
        else
-         {
-           /* Otherwise we can't assume anything about the nature of
-              the constraint except that it isn't purely registers.
-              Treat it like "g" and hope for the best.  */
-           *allows_reg = true;
-           *allows_mem = true;
-         }
+         insn_extra_constraint_allows_reg_mem (cn, allows_reg, allows_mem);
        break;
       }
 
@@ -465,13 +459,7 @@ parse_input_constraint (const char **con
        else if (insn_extra_memory_constraint (cn))
          *allows_mem = true;
        else
-         {
-           /* Otherwise we can't assume anything about the nature of
-              the constraint except that it isn't purely registers.
-              Treat it like "g" and hope for the best.  */
-           *allows_reg = true;
-           *allows_mem = true;
-         }
+         insn_extra_constraint_allows_reg_mem (cn, allows_reg, allows_mem);
        break;
       }
 
--- gcc/testsuite/gcc.target/aarch64/c-output-template-4.c.jj   2015-04-17 
17:48:27.588654584 +0200
+++ gcc/testsuite/gcc.target/aarch64/c-output-template-4.c      2015-04-17 
17:48:22.149743468 +0200
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+void
+test (void)
+{
+    __asm__ ("@ %c0" : : "S" (&test + 4));
+}
+
+/* { dg-final { scan-assembler "@ test\\+4" } } */



1.1                  
src/patchsets/gcc/5.1.0/gentoo/86_all_gcc5-pie-copy-relocs-pr65780.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/86_all_gcc5-pie-copy-relocs-pr65780.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/86_all_gcc5-pie-copy-relocs-pr65780.patch?rev=1.1&content-type=text/plain

Index: 86_all_gcc5-pie-copy-relocs-pr65780.patch
===================================================================
https://gcc.gnu.org/PR65780

2015-04-22  Jakub Jelinek  <ja...@redhat.com>

        PR target/65780
        * config/s390/linux.h (TARGET_BINDS_LOCAL_P): Define to
        default_binds_local_p_2.
        * config/arm/linux-elf.h (TARGET_BINDS_LOCAL_P): Likewise.
        * config/aarch64/aarch64-linux.h (TARGET_BINDS_LOCAL_P): Likewise.

--- gcc/config/s390/linux.h.jj  2015-01-05 13:07:16.000000000 +0100
+++ gcc/config/s390/linux.h     2015-04-22 17:39:38.880273650 +0200
@@ -90,4 +90,10 @@ along with GCC; see the file COPYING3.
 #undef TARGET_LIBC_HAS_FUNCTION
 #define TARGET_LIBC_HAS_FUNCTION gnu_libc_has_function
 
+/* Uninitialized common symbols in non-PIE executables, even with
+   strong definitions in dependent shared libraries, will resolve
+   to COPY relocated symbol in the executable.  See PR65780.  */
+#undef TARGET_BINDS_LOCAL_P
+#define TARGET_BINDS_LOCAL_P default_binds_local_p_2
+
 #endif
--- gcc/config/arm/linux-elf.h.jj       2015-01-05 13:07:16.000000000 +0100
+++ gcc/config/arm/linux-elf.h  2015-04-22 17:42:35.979420149 +0200
@@ -118,3 +118,9 @@
 /* Add .note.GNU-stack.  */
 #undef NEED_INDICATE_EXEC_STACK
 #define NEED_INDICATE_EXEC_STACK       1
+
+/* Uninitialized common symbols in non-PIE executables, even with
+   strong definitions in dependent shared libraries, will resolve
+   to COPY relocated symbol in the executable.  See PR65780.  */
+#undef TARGET_BINDS_LOCAL_P
+#define TARGET_BINDS_LOCAL_P default_binds_local_p_2
--- gcc/config/aarch64/aarch64-linux.h.jj       2015-01-05 13:07:17.000000000 
+0100
+++ gcc/config/aarch64/aarch64-linux.h  2015-04-22 17:40:46.395185820 +0200
@@ -69,4 +69,10 @@
 
 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
 
+/* Uninitialized common symbols in non-PIE executables, even with
+   strong definitions in dependent shared libraries, will resolve
+   to COPY relocated symbol in the executable.  See PR65780.  */
+#undef TARGET_BINDS_LOCAL_P
+#define TARGET_BINDS_LOCAL_P default_binds_local_p_2
+
 #endif  /* GCC_AARCH64_LINUX_H */



1.1                  
src/patchsets/gcc/5.1.0/gentoo/90_all_pr55930-dependency-tracking.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/90_all_pr55930-dependency-tracking.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/90_all_pr55930-dependency-tracking.patch?rev=1.1&content-type=text/plain

Index: 90_all_pr55930-dependency-tracking.patch
===================================================================
libatomic build failure if configured with --disable-dependency-tracking
load_n.c:115:1: fatal error: opening dependency file .deps/load_1_.lo.Ppo: No 
such file or directory

https://bugs.gentoo.org/463463
http://gcc.gnu.org/PR55930

--- a/libatomic/Makefile.in
+++ b/libatomic/Makefile.in
@@ -298,7 +298,8 @@ PAT_N = $(word 2,$(PAT_SPLIT))
 PAT_S = $(word 3,$(PAT_SPLIT))
 IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
 IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
-M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
+@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
+@AMDEP_FALSE@M_DEPS =
 M_SIZE = -DN=$(PAT_N)
 M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
 M_FILE = $(PAT_BASE)_n.c



1.1                  src/patchsets/gcc/5.1.0/gentoo/README.history

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/README.history?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/gcc/5.1.0/gentoo/README.history?rev=1.1&content-type=text/plain

Index: README.history
===================================================================
1.0             23 Apr 2015
        + 05_all_gcc-spec-env.patch
        + 09_all_default-ssp.patch
        + 10_all_default-fortify-source.patch
        + 11_all_default-warn-format-security.patch
        + 12_all_default-warn-trampolines.patch
        + 20_all_msgfmt-libstdc++-link.patch
        + 25_all_alpha-mieee-default.patch
        + 26_all_alpha-asm-mcpu.patch
        + 29_all_arm_armv4t-default.patch
        + 30_all_freebsd-pie.patch
        + 34_all_ia64_note.GNU-stack.patch
        + 38_all_sh_pr24836_all-archs.patch
        + 42_all_superh_default-multilib.patch
        + 50_all_libiberty-asprintf.patch
        + 51_all_libiberty-pic.patch
        + 52_all_netbsd-Bsymbolic.patch
        + 53_all_libitm-no-fortify-source.patch
        + 67_all_gcc-poison-system-directories.patch
        + 74_all_gcc5_isl-dl.patch
        + 85_all_gcc5-aarch64-pr65689.patch
        + 86_all_gcc5-pie-copy-relocs-pr65780.patch
        + 90_all_pr55930-dependency-tracking.patch




Reply via email to