diff --git a/gnu/local.mk b/gnu/local.mk index 21f0993a3f..b184f6c5a3 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1,6 +1,6 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2012-2023 Ludovic Courtès -# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022 Andreas Enge +# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022, 2023 Andreas Enge # Copyright © 2016 Mathieu Lirzin # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Mark H Weaver # Copyright © 2016 Chris Marusich @@ -1616,6 +1616,8 @@ dist_patch_DATA = \ %D%/packages/patches/openboardview-use-system-utf8.patch \ %D%/packages/patches/openbox-python3.patch \ %D%/packages/patches/openfoam-4.1-cleanup.patch \ + %D%/packages/patches/openjdk-9-pointer-comparison.patch \ + %D%/packages/patches/openjdk-9-setsignalhandler.patch \ %D%/packages/patches/openjdk-10-idlj-reproducibility.patch \ %D%/packages/patches/openjdk-15-xcursor-no-dynamic.patch \ %D%/packages/patches/openmpi-mtl-priorities.patch \ diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 98c37bd6ed..e8cc968544 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -871,7 +871,9 @@ new Date();")) (find-files "." ".*.(bin|exe|jar)$")))) (sha256 (base32 - "1v92nzdqx07c35x945awzir4yk0fk22vky6fpp8mq9js930sxsz0")))) + "1v92nzdqx07c35x945awzir4yk0fk22vky6fpp8mq9js930sxsz0")) + (patches (search-patches "openjdk-9-pointer-comparison.patch" + "openjdk-9-setsignalhandler.patch")))) (build-system gnu-build-system) (outputs '("out" "jdk" "doc")) (arguments diff --git a/gnu/packages/patches/openjdk-9-pointer-comparison.patch b/gnu/packages/patches/openjdk-9-pointer-comparison.patch new file mode 100644 index 0000000000..dd443ae817 --- /dev/null +++ b/gnu/packages/patches/openjdk-9-pointer-comparison.patch @@ -0,0 +1,27 @@ +The following patch prevents build failures due to comparisons between +a pointer and an integer. It has been adapted from openjdk@10. + +diff -u -r openjdk-9.alt/hotspot/src/share/vm/memory/virtualspace.cpp openjdk-9/hotspot/src/share/vm/memory/virtualspace.cpp +--- openjdk-9.alt/hotspot/src/share/vm/memory/virtualspace.cpp 2023-04-05 13:46:58.841965513 +0200 ++++ openjdk-9/hotspot/src/share/vm/memory/virtualspace.cpp 2023-04-05 13:48:43.902387837 +0200 +@@ -581,7 +581,7 @@ + assert(markOopDesc::encode_pointer_as_mark(&_base[size])->decode_pointer() == &_base[size], + "area must be distinguishable from marks for mark-sweep"); + +- if (base() > 0) { ++ if (base() != NULL) { + MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap); + } + } +diff -u -r openjdk-9.alt/hotspot/src/share/vm/opto/lcm.cpp openjdk-9/hotspot/src/share/vm/opto/lcm.cpp +--- openjdk-9.alt/hotspot/src/share/vm/opto/lcm.cpp 2023-04-05 13:46:58.849965545 +0200 ++++ openjdk-9/hotspot/src/share/vm/opto/lcm.cpp 2023-04-05 13:47:53.566187260 +0200 +@@ -39,7 +39,7 @@ + // Check whether val is not-null-decoded compressed oop, + // i.e. will grab into the base of the heap if it represents NULL. + static bool accesses_heap_base_zone(Node *val) { +- if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops. ++ if (Universe::narrow_oop_base() != NULL) { // Implies UseCompressedOops. + if (val && val->is_Mach()) { + if (val->as_Mach()->ideal_Opcode() == Op_DecodeN) { + // This assumes all Decodes with TypePtr::NotNull are matched to nodes that diff --git a/gnu/packages/patches/openjdk-9-setsignalhandler.patch b/gnu/packages/patches/openjdk-9-setsignalhandler.patch new file mode 100644 index 0000000000..500bf2360b --- /dev/null +++ b/gnu/packages/patches/openjdk-9-setsignalhandler.patch @@ -0,0 +1,24 @@ +Patch taken from file comparison with openjdk@19. + +diff -u -r openjdk-9.alt/hotspot/test/runtime/StackGuardPages/exeinvoke.c openjdk-9/hotspot/test/runtime/StackGuardPages/exeinvoke.c +--- openjdk-9.alt/hotspot/test/runtime/StackGuardPages/exeinvoke.c 2023-04-05 13:46:58.689964892 +0200 ++++ openjdk-9/hotspot/test/runtime/StackGuardPages/exeinvoke.c 2023-04-05 14:15:52.435613325 +0200 +@@ -67,8 +67,17 @@ + longjmp(context, 1); + } + ++static char* altstack = NULL; ++ + void set_signal_handler() { +- static char altstack[SIGSTKSZ]; ++ if (altstack == NULL) { ++ // Dynamically allocated in case SIGSTKSZ is not constant ++ altstack = (char*)malloc(SIGSTKSZ); ++ if (altstack == NULL) { ++ fprintf(stderr, "Test ERROR. Unable to malloc altstack space\n"); ++ exit(7); ++ } ++ } + + stack_t ss = { + .ss_size = SIGSTKSZ,