From ce5bcc52b22869ffdbf0e6893a1fc3d261a7d6a3 Mon Sep 17 00:00:00 2001
From: rofl0r <retnyg@gmx.net>
Date: Sun, 18 Mar 2018 16:06:13 +0000
Subject: [PATCH] add support for GCC 6.4.0

GCC 6.4.0 has one big advantage over 6.3.0: it is shipped as .tar.xz,
shaving 30 MB from its download size, and also considerably speeding
up the extraction process.

All patches are symlinks to the GCC 6.3.0 ones, except 0004-posix_memalign.diff
which was rebased to apply cleanly.
0014-ubsan-empty-string-fix.diff was removed, since it was upstreamed.
---
 hashes/gcc-6.4.0.tar.xz.sha1                  |  1 +
 .../0001-linux_libc_has_function.diff         |  1 +
 patches/gcc-6.4.0/0002-ssp_nonshared.diff     |  1 +
 patches/gcc-6.4.0/0003-mips-unwind.diff       |  1 +
 patches/gcc-6.4.0/0004-posix_memalign.diff    | 30 +++++++++++++++++++
 patches/gcc-6.4.0/0005-cilkrts.diff           |  1 +
 .../gcc-6.4.0/0006-libatomic-test-fix.diff    |  1 +
 patches/gcc-6.4.0/0007-libgomp-test-fix.diff  |  1 +
 patches/gcc-6.4.0/0008-libitm-test-fix.diff   |  1 +
 patches/gcc-6.4.0/0009-libvtv-test-fix.diff   |  1 +
 .../gcc-6.4.0/0010-static-pie-support.diff    |  1 +
 patches/gcc-6.4.0/0011-j2.diff                |  1 +
 patches/gcc-6.4.0/0012-s390x-muslldso.diff    |  1 +
 .../gcc-6.4.0/0013-microblaze-pr65649.diff    |  1 +
 14 files changed, 43 insertions(+)
 create mode 100644 hashes/gcc-6.4.0.tar.xz.sha1
 create mode 120000 patches/gcc-6.4.0/0001-linux_libc_has_function.diff
 create mode 120000 patches/gcc-6.4.0/0002-ssp_nonshared.diff
 create mode 120000 patches/gcc-6.4.0/0003-mips-unwind.diff
 create mode 100644 patches/gcc-6.4.0/0004-posix_memalign.diff
 create mode 120000 patches/gcc-6.4.0/0005-cilkrts.diff
 create mode 120000 patches/gcc-6.4.0/0006-libatomic-test-fix.diff
 create mode 120000 patches/gcc-6.4.0/0007-libgomp-test-fix.diff
 create mode 120000 patches/gcc-6.4.0/0008-libitm-test-fix.diff
 create mode 120000 patches/gcc-6.4.0/0009-libvtv-test-fix.diff
 create mode 120000 patches/gcc-6.4.0/0010-static-pie-support.diff
 create mode 120000 patches/gcc-6.4.0/0011-j2.diff
 create mode 120000 patches/gcc-6.4.0/0012-s390x-muslldso.diff
 create mode 120000 patches/gcc-6.4.0/0013-microblaze-pr65649.diff

diff --git a/hashes/gcc-6.4.0.tar.xz.sha1 b/hashes/gcc-6.4.0.tar.xz.sha1
new file mode 100644
index 0000000..b8af9dd
--- /dev/null
+++ b/hashes/gcc-6.4.0.tar.xz.sha1
@@ -0,0 +1 @@
+f237974b2d3af0f60936ce6a2f35b912a91e0239  gcc-6.4.0.tar.xz
diff --git a/patches/gcc-6.4.0/0001-linux_libc_has_function.diff b/patches/gcc-6.4.0/0001-linux_libc_has_function.diff
new file mode 120000
index 0000000..afe4c5f
--- /dev/null
+++ b/patches/gcc-6.4.0/0001-linux_libc_has_function.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0001-linux_libc_has_function.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0002-ssp_nonshared.diff b/patches/gcc-6.4.0/0002-ssp_nonshared.diff
new file mode 120000
index 0000000..ea09efb
--- /dev/null
+++ b/patches/gcc-6.4.0/0002-ssp_nonshared.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0002-ssp_nonshared.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0003-mips-unwind.diff b/patches/gcc-6.4.0/0003-mips-unwind.diff
new file mode 120000
index 0000000..8e5f941
--- /dev/null
+++ b/patches/gcc-6.4.0/0003-mips-unwind.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0003-mips-unwind.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0004-posix_memalign.diff b/patches/gcc-6.4.0/0004-posix_memalign.diff
new file mode 100644
index 0000000..16fefa3
--- /dev/null
+++ b/patches/gcc-6.4.0/0004-posix_memalign.diff
@@ -0,0 +1,30 @@
+diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h
+index a9c2be4..2596a90 100644
+--- a/gcc/config/i386/pmm_malloc.h
++++ b/gcc/config/i386/pmm_malloc.h
+@@ -27,12 +27,13 @@
+ #include <stdlib.h>
+ 
+ /* We can't depend on <stdlib.h> since the prototype of posix_memalign
+-   may not be visible.  */
++   may not be visible and we can't pollute the namespace either.  */
+ #ifndef __cplusplus
+-extern int posix_memalign (void **, size_t, size_t);
++extern int _mm_posix_memalign (void **, size_t, size_t)
+ #else
+-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
++extern "C" int _mm_posix_memalign (void **, size_t, size_t) throw ()
+ #endif
++__asm__("posix_memalign");
+ 
+ static __inline void *
+ _mm_malloc (size_t __size, size_t __alignment)
+@@ -42,7 +43,7 @@ _mm_malloc (size_t __size, size_t __alignment)
+     return malloc (__size);
+   if (__alignment == 2 || (sizeof (void *) == 8 && __alignment == 4))
+     __alignment = sizeof (void *);
+-  if (posix_memalign (&__ptr, __alignment, __size) == 0)
++  if (_mm_posix_memalign (&__ptr, __alignment, __size) == 0)
+     return __ptr;
+   else
+     return NULL;
diff --git a/patches/gcc-6.4.0/0005-cilkrts.diff b/patches/gcc-6.4.0/0005-cilkrts.diff
new file mode 120000
index 0000000..0b0e9a5
--- /dev/null
+++ b/patches/gcc-6.4.0/0005-cilkrts.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0005-cilkrts.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0006-libatomic-test-fix.diff b/patches/gcc-6.4.0/0006-libatomic-test-fix.diff
new file mode 120000
index 0000000..40de698
--- /dev/null
+++ b/patches/gcc-6.4.0/0006-libatomic-test-fix.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0006-libatomic-test-fix.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0007-libgomp-test-fix.diff b/patches/gcc-6.4.0/0007-libgomp-test-fix.diff
new file mode 120000
index 0000000..22f19bc
--- /dev/null
+++ b/patches/gcc-6.4.0/0007-libgomp-test-fix.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0007-libgomp-test-fix.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0008-libitm-test-fix.diff b/patches/gcc-6.4.0/0008-libitm-test-fix.diff
new file mode 120000
index 0000000..2ead61a
--- /dev/null
+++ b/patches/gcc-6.4.0/0008-libitm-test-fix.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0008-libitm-test-fix.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0009-libvtv-test-fix.diff b/patches/gcc-6.4.0/0009-libvtv-test-fix.diff
new file mode 120000
index 0000000..b33ead5
--- /dev/null
+++ b/patches/gcc-6.4.0/0009-libvtv-test-fix.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0009-libvtv-test-fix.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0010-static-pie-support.diff b/patches/gcc-6.4.0/0010-static-pie-support.diff
new file mode 120000
index 0000000..88e3978
--- /dev/null
+++ b/patches/gcc-6.4.0/0010-static-pie-support.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0010-static-pie-support.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0011-j2.diff b/patches/gcc-6.4.0/0011-j2.diff
new file mode 120000
index 0000000..2c39b0c
--- /dev/null
+++ b/patches/gcc-6.4.0/0011-j2.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0011-j2.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0012-s390x-muslldso.diff b/patches/gcc-6.4.0/0012-s390x-muslldso.diff
new file mode 120000
index 0000000..3d8cd78
--- /dev/null
+++ b/patches/gcc-6.4.0/0012-s390x-muslldso.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0012-s390x-muslldso.diff
\ No newline at end of file
diff --git a/patches/gcc-6.4.0/0013-microblaze-pr65649.diff b/patches/gcc-6.4.0/0013-microblaze-pr65649.diff
new file mode 120000
index 0000000..2ac644c
--- /dev/null
+++ b/patches/gcc-6.4.0/0013-microblaze-pr65649.diff
@@ -0,0 +1 @@
+../gcc-6.3.0/0013-microblaze-pr65649.diff
\ No newline at end of file