From db024183c9fa93289a45e816529e99001de0a7d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= Date: Tue, 3 Jul 2018 00:50:32 +0200 Subject: [PATCH] gnu: icedtea: Work around gcc segfault. * gnu/packages/java.scm (icedtea-7)[native-inputs]: Add patch to hotspot. * gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/java.scm | 12 ++++- ...ea-7-hotspot-gcc-segfault-workaround.patch | 45 +++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch diff --git a/gnu/local.mk b/gnu/local.mk index 10b61ba1ba..925f87763d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -802,6 +802,7 @@ dist_patch_DATA = \ %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/icedtea-7-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 f2f7078459..b4f811cf93 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -1405,8 +1405,16 @@ (define (import-cert cert) ,(drop "langtools" "0nq5236fzxn3p6x8cgncl56mzcmsj07q9gymysnws4c8byc6n0qj")) ("hotspot-drop" - ,(drop "hotspot" - "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws")) + ,(origin + (method url-fetch) + (uri (string-append + "http://icedtea.classpath.org/downloads/drops" + "/icedtea7/" version "/hotspot.tar.bz2")) + (sha256 + (base32 + "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws")) + (patches (search-patches + "icedtea-7-hotspot-gcc-segfault-workaround.patch")))) ("ant" ,ant-bootstrap) ("attr" ,attr) ("coreutils" ,coreutils) diff --git a/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch b/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch new file mode 100644 index 0000000000..35cfe38152 --- /dev/null +++ b/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch @@ -0,0 +1,45 @@ +From 2f0ef2c69e99e1096a2a72c7a29025a736b044b4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= +Date: Mon, 2 Jul 2018 23:37:25 +0200 +Subject: [PATCH] Fix gcc segfault. + +--- + src/share/vm/opto/output.cpp | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/share/vm/opto/output.cpp b/src/share/vm/opto/output.cpp +index d46cb87..0eb9eda 100644 +--- a/src/share/vm/opto/output.cpp ++++ b/src/share/vm/opto/output.cpp +@@ -1787,6 +1787,8 @@ uint Scheduling::_total_instructions_per_bundle[Pipeline::_max_instrs_per_cycle+ + + // Initializer for class Scheduling + ++volatile const void *eePointer = Pipeline_Use::elaborated_elements; ++ + Scheduling::Scheduling(Arena *arena, Compile &compile) + : _arena(arena), + _cfg(compile.cfg()), +@@ -1829,7 +1831,7 @@ Scheduling::Scheduling(Arena *arena, Compile &compile) + memset(_current_latency, 0, node_max * sizeof(unsigned short)); + + // Clear the bundling information +- memcpy(_bundle_use_elements, Pipeline_Use::elaborated_elements, sizeof(Pipeline_Use::elaborated_elements)); ++ memcpy(_bundle_use_elements, (void *)eePointer, 11*sizeof(Pipeline_Use_Element)); + + // Get the last node + Block* block = _cfg->get_block(_cfg->number_of_blocks() - 1); +@@ -1880,8 +1882,8 @@ void Scheduling::step_and_clear() { + _bundle_use.reset(); + + memcpy(_bundle_use_elements, +- Pipeline_Use::elaborated_elements, +- sizeof(Pipeline_Use::elaborated_elements)); ++ (void *)eePointer, ++ 11*sizeof(Pipeline_Use_Element)); + } + + // Perform instruction scheduling and bundling over the sequence of +-- +2.18.0 +