summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/embedded.scm9
-rw-r--r--gnu/packages/patches/gcc-6-fix-buffer-size.patch15
-rw-r--r--gnu/packages/patches/gcc-6-fix-isl-includes.patch16
4 files changed, 39 insertions, 3 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index bc60307094..d2c3a471e7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1013,6 +1013,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch		\
   %D%/packages/patches/gcc-libsanitizer-ustat.patch		\
   %D%/packages/patches/gcc-4.9-libsanitizer-mode-size.patch	\
+  %D%/packages/patches/gcc-6-fix-isl-includes.patch	\
+  %D%/packages/patches/gcc-6-fix-buffer-size.patch	\
   %D%/packages/patches/gcc-6-libsanitizer-mode-size.patch	\
   %D%/packages/patches/gcc-7-libsanitizer-mode-size.patch	\
   %D%/packages/patches/gcc-libvtv-runpath.patch			\
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 3a64c75109..89d4aaf97e 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -1024,8 +1024,8 @@ the Raspberry Pi chip.")
       (home-page "https://github.com/puppeh/vc4-toolchain/"))))
 
 (define-public gcc-vc4
-  (let ((commit "165f6d0e11d2e76ee799533bb45bd5c92bf60dc2")
-        (xgcc (cross-gcc "vc4-elf" #:xbinutils binutils-vc4)))
+  (let ((commit "0fe4b83897341742f9df65797474cb0feab4b377")
+        (xgcc (cross-gcc "vc4-elf" #:xgcc gcc-6 #:xbinutils binutils-vc4)))
     (package (inherit xgcc)
       (name "gcc-vc4")
       (source (origin
@@ -1039,7 +1039,10 @@ the Raspberry Pi chip.")
                                           "-checkout"))
                 (sha256
                  (base32
-                  "13h30qjcwnlz6lfma1d82nnvfmjnhh7abkagip4vly6vm5fpnvf2"))))
+                  "0kvaq4s0assvinmmicwqp07d0wwldcw0fv6f4k13whp3q5909jnr"))
+                (patches
+                 (search-patches "gcc-6-fix-buffer-size.patch"
+                                 "gcc-6-fix-isl-includes.patch"))))
       (native-inputs
         `(("flex" ,flex)
           ,@(package-native-inputs xgcc)))
diff --git a/gnu/packages/patches/gcc-6-fix-buffer-size.patch b/gnu/packages/patches/gcc-6-fix-buffer-size.patch
new file mode 100644
index 0000000000..5fcd769d45
--- /dev/null
+++ b/gnu/packages/patches/gcc-6-fix-buffer-size.patch
@@ -0,0 +1,15 @@
+Fixes a possible buffer overflow.  (There are others)
+Author: Danny Milosavljevic <dannym@scratchpost.org>
+Date: 2020-11-16
+
+--- a/gcc/gimplify.c.orig	2020-10-29 08:45:11.532479774 +0100
++++ b/gcc/gimplify.c	2020-10-29 08:45:49.584637018 +0100
+@@ -5229,7 +5229,7 @@
+ 	     flexibility, split it into separate input and output
+  	     operands.  */
+ 	  tree input;
+-	  char buf[10];
++	  char buf[12];
+ 
+ 	  /* Turn the in/out constraint into an output constraint.  */
+ 	  char *p = xstrdup (constraint);
diff --git a/gnu/packages/patches/gcc-6-fix-isl-includes.patch b/gnu/packages/patches/gcc-6-fix-isl-includes.patch
new file mode 100644
index 0000000000..ab3c5634ea
--- /dev/null
+++ b/gnu/packages/patches/gcc-6-fix-isl-includes.patch
@@ -0,0 +1,16 @@
+See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86724
+Author: Rainer Jung
+Date: 2018-07-29
+
+isl 0.20 stopped including other unused header files in their header files.
+Therefore,now it's necessary to include the stuff ourselves.
+--- .../gcc/graphite.h 2018-01-03 11:03:58.000000000 +0000
++++ .../gcc/graphite.h 2018-07-29 17:42:55.836121000 +0000
+@@ -37,6 +37,8 @@
+ #include <isl/schedule.h>
+ #include <isl/ast_build.h>
+ #include <isl/schedule_node.h>
++#include <isl/id.h>
++#include <isl/space.h>
+
+ typedef struct poly_dr *poly_dr_p;