From a212006048b14dc8614010a16db5bc6585dbf699 Mon Sep 17 00:00:00 2001 From: Simon South Date: Wed, 10 Jun 2020 11:03:39 -0400 Subject: gnu: jamvm: Fix to work with current gcc and glibc. * gnu/packages/java.scm (jamvm)[source]: Add patch. (jamvm-1-bootstrap)[native-inputs]: Remove. * gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Signed-off-by: Marius Bakke --- gnu/local.mk | 1 + gnu/packages/java.scm | 8 ++---- .../jamvm-2.0.0-disable-branch-patching.patch | 31 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch diff --git a/gnu/local.mk b/gnu/local.mk index 940f1c50e1..1b9fabd2ad 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1109,6 +1109,7 @@ dist_patch_DATA = \ %D%/packages/patches/irrlicht-use-system-libs.patch \ %D%/packages/patches/isl-0.11.1-aarch64-support.patch \ %D%/packages/patches/jacal-fix-texinfo.patch \ + %D%/packages/patches/jamvm-2.0.0-disable-branch-patching.patch \ %D%/packages/patches/jamvm-arm.patch \ %D%/packages/patches/java-apache-ivy-port-to-latest-bouncycastle.patch \ %D%/packages/patches/java-commons-collections-fix-java8.patch \ diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index d5bc713c70..cfe67d5688 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -54,7 +54,6 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages gawk) #:use-module (gnu packages gettext) - #:use-module (gnu packages gcc) #:use-module (gnu packages gl) #:use-module (gnu packages ghostscript) ;lcms #:use-module (gnu packages gnome) @@ -254,11 +253,6 @@ language.") ("libffi" ,libffi) ("zip" ,zip) ("zlib" ,zlib))) - ;; When built with a recent GCC and glibc the configure step of icedtea-6 - ;; fails with an invalid instruction error. - (native-inputs - `(("gcc" ,gcc-5) - ("libc" ,glibc-2.28))) (home-page "http://jamvm.sourceforge.net/") (synopsis "Small Java Virtual Machine") (description "JamVM is a Java Virtual Machine conforming to the JVM @@ -708,6 +702,8 @@ machine."))) (sha256 (base32 "1nl0zxz8y5x8gwsrm7n32bry4dx8x70p8z3s9jbdvs8avyb8whkn")) + (patches + (search-patches "jamvm-2.0.0-disable-branch-patching.patch")) (snippet '(begin ;; Remove precompiled software. diff --git a/gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch b/gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch new file mode 100644 index 0000000000..1352ed7803 --- /dev/null +++ b/gnu/packages/patches/jamvm-2.0.0-disable-branch-patching.patch @@ -0,0 +1,31 @@ +From d80cfc83325f8e95d35ecd9f15b36b96fa9ed3ee Mon Sep 17 00:00:00 2001 +From: Simon South +Date: Sat, 6 Jun 2020 18:56:56 -0400 +Subject: [PATCH] Disable branch-patching + +This patch disables JamVM's branch-patching optimization, which tends +to make JamVM fail with an "Illegal instruction" error on x86_64 (and +possibly other architectures that use variable-length instructions) +when built using modern versions of gcc and glibc. +--- + src/init.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/init.c b/src/init.c +index 32539cf..38ad54b 100644 +--- a/src/init.c ++++ b/src/init.c +@@ -72,8 +72,8 @@ void setDefaultInitArgs(InitArgs *args) { + #ifdef INLINING + args->replication_threshold = 10; + args->profile_threshold = 10; +- args->branch_patching_dup = TRUE; +- args->branch_patching = TRUE; ++ args->branch_patching_dup = FALSE; ++ args->branch_patching = FALSE; + args->print_codestats = FALSE; + args->join_blocks = TRUE; + args->profiling = TRUE; +-- +2.25.2 + -- cgit v1.2.3