summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2018-07-24 19:56:35 +0200
committerMarius Bakke <mbakke@fastmail.com>2018-07-24 19:56:35 +0200
commit706ae8e15c8d36b0aee7c19c54c143d3e17f5784 (patch)
treee9fe8ebfb1417d30979b5413165599f066a1c504 /gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch
parent3e95125e9bd0676d4a9add9105217ad3eaef3ff0 (diff)
parent8440db459a10daa24282038f35bc0b6771bd51ab (diff)
downloadguix-patches-706ae8e15c8d36b0aee7c19c54c143d3e17f5784.tar
guix-patches-706ae8e15c8d36b0aee7c19c54c143d3e17f5784.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch')
-rw-r--r--gnu/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch45
1 files changed, 45 insertions, 0 deletions
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?= <boskovits@gmail.com>
+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
+