boskovits pushed a commit to branch master
in repository guix.

commit 1cdff8cdb7b4822bd16fe713bc0b138a01a546aa
Author: Gábor Boskovits <boskov...@gmail.com>
Date:   Mon Jul 2 11:02:11 2018 +0200

    gnu: icedtea: Work around gcc segfault.
    
    * gnu/packages/java.scm (icedtea-6)[arguments]: Modify phases to extract
    hostspot, as after the patching it becomes an archive.
    [native-inputs]: add patch to hotspot-src.
    * gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch:
    New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/java.scm                              |  9 +++--
 ...icedtea-6-hotspot-gcc-segfault-workaround.patch | 42 ++++++++++++++++++++++
 3 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 3213e50..0776be0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -801,6 +801,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch    \
   %D%/packages/patches/icecat-use-system-graphite2.patch       \
   %D%/packages/patches/icecat-use-system-harfbuzz.patch                \
+  %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch  \
   %D%/packages/patches/id3lib-CVE-2007-4460.patch                      \
   %D%/packages/patches/ilmbase-fix-tests.patch                 \
   %D%/packages/patches/intltool-perl-compatibility.patch       \
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index f04a382..1b4cc4d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -684,8 +684,11 @@ machine.")))
                                    (assoc-ref inputs
                                               (string-append part "-src"))
                                    part))
-                                '("jdk" "hotspot" "corba"
+                                '("jdk" "corba"
                                   "langtools" "jaxp" "jaxws")))
+                    (with-directory-excursion "openjdk"
+                      (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
+                      (rename-file "hg-checkout" "hotspot"))
                     (substitute* "Makefile.in"
                       (("echo \"ERROR: No up-to-date OpenJDK zip available\"; 
exit -1;")
                        "echo \"trust me\";")
@@ -905,7 +908,9 @@ machine.")))
                  (changeset "jdk6-b41")))
            (sha256
             (base32
-             "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))))
+             "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))
+           (patches
+            (search-patches 
"icedtea-6-hotspot-gcc-segfault-workaround.patch"))))
        ("corba-src"
         ,(origin
            (method hg-fetch)
diff --git 
a/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch 
b/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch
new file mode 100644
index 0000000..ef090e0
--- /dev/null
+++ b/gnu/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User Gábor Boskovits <boskov...@gmail.com>
+# Date 1530519413 -7200
+#      Mon Jul 02 10:16:53 2018 +0200
+# Node ID 77e5bc9e238a28d17e097647badc04ed67a6a452
+# Parent  1ae05a34e052d1672b4a7894ddf5fc2f662eb861
+Fix gcc segfault.
+
+diff -r 1ae05a34e052 -r 77e5bc9e238a src/share/vm/opto/output.cpp
+--- a/src/share/vm/opto/output.cpp     Sun Dec 25 23:52:13 2016 +0000
++++ b/src/share/vm/opto/output.cpp     Mon Jul 02 10:16:53 2018 +0200
+@@ -1758,6 +1758,8 @@
+ 
+ // Initializer for class Scheduling
+ 
++volatile const void *eePointer = Pipeline_Use::elaborated_elements;
++
+ Scheduling::Scheduling(Arena *arena, Compile &compile)
+   : _arena(arena),
+     _cfg(compile.cfg()),
+@@ -1802,8 +1804,8 @@
+ 
+   // Clear the bundling information
+   memcpy(_bundle_use_elements,
+-    Pipeline_Use::elaborated_elements,
+-    sizeof(Pipeline_Use::elaborated_elements));
++       (void *)eePointer,
++    11*sizeof(Pipeline_Use_Element));
+ 
+   // Get the last node
+   Block *bb = _cfg->_blocks[_cfg->_blocks.size()-1];
+@@ -1854,8 +1856,8 @@
+   _bundle_use.reset();
+ 
+   memcpy(_bundle_use_elements,
+-    Pipeline_Use::elaborated_elements,
+-    sizeof(Pipeline_Use::elaborated_elements));
++       (void *)eePointer,
++    11*sizeof(Pipeline_Use_Element));
+ }
+ 
+ 
//------------------------------ScheduleAndBundle------------------------------

Reply via email to