diff options
-rw-r--r-- | gnu/local.mk | 3 | ||||
-rw-r--r-- | gnu/packages/java.scm | 23 | ||||
-rw-r--r-- | gnu/packages/patches/icedtea-7-hotspot-pointer-comparison.patch | 36 |
3 files changed, 54 insertions, 8 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 1ffb7bfe9d..70640ddfd3 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1295,7 +1295,8 @@ dist_patch_DATA = \ %D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \ %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ %D%/packages/patches/icecat-use-system-media-libs.patch \ - %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch\ + %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch \ + %D%/packages/patches/icedtea-7-hotspot-pointer-comparison.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \ %D%/packages/patches/id3lib-UTF16-writing-bug.patch \ %D%/packages/patches/idris-test-ffi008.patch \ diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index bb172f3bee..702f0ea9d3 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -903,15 +903,23 @@ supports sufficient parts of Java 7 to build Icedtea 2.x.") "openjdk.src/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c") (("#include <sys/sysctl.h>") "#include <linux/sysctl.h>")) + + ;; XXX 'ldd' in glibc 2.35 segfaults upon reading + ;; openjdk.build-boot/lib/amd64/libnio.so (!). + ;; It is only used as a verification step, so ignore it; + ;; try removing this substitution for newer versions of glibc. + (substitute* "openjdk.src/jdk/make/common/shared/Defs-linux.gmk" + (("\\$\\(LDD\\) \\$1 &&") + "")) + ;; It looks like the "h = 31 * h + c" line of the jsum() ;; function gets miscompiled. After a few iterations of the loop ;; the result of "31 * h" is always 0x8000000000000000. - ;; Bad optimization maybe... - ;; Transform "31 * h + c" into a convoluted "32 * h + c - h" - ;; as a workaround. - (substitute* "openjdk.src/hotspot/src/share/vm/memory/dump.cpp" - (("h = 31 \\* h \\+ c;") - "jlong h0 = h;\nfor(int i = 0; i < 5; i++) h += h;\nh += c - h0;")))) + ;; Disable optimizations of dump.cpp as a workaround. + (substitute* "openjdk.src/hotspot/make/linux/makefiles/gcc.make" + (("OPT_CFLAGS/NOOPT.*" all) + (string-append all "\n" + "OPT_CFLAGS/dump.o += -O0"))))) (add-after 'unpack 'fix-x11-extension-include-path (lambda* (#:key inputs #:allow-other-keys) (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk" @@ -1287,7 +1295,8 @@ supports sufficient parts of Java 7 to build Icedtea 2.x.") (base32 "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws")) (patches (search-patches - "icedtea-7-hotspot-aarch64-use-c++98.patch")))) + "icedtea-7-hotspot-aarch64-use-c++98.patch" + "icedtea-7-hotspot-pointer-comparison.patch")))) ("ant" ,ant-bootstrap) ("attr" ,attr) ("classpath" ,classpath-devel) diff --git a/gnu/packages/patches/icedtea-7-hotspot-pointer-comparison.patch b/gnu/packages/patches/icedtea-7-hotspot-pointer-comparison.patch new file mode 100644 index 0000000000..deb305bd96 --- /dev/null +++ b/gnu/packages/patches/icedtea-7-hotspot-pointer-comparison.patch @@ -0,0 +1,36 @@ +Avoid ordered comparison of pointer with integer to prevent compile error +with GCC 11. + +diff --git a/src/share/vm/opto/lcm.cpp b/src/share/vm/opto/lcm.cpp +--- a/src/share/vm/opto/lcm.cpp ++++ b/src/share/vm/opto/lcm.cpp +@@ -60,7 +60,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/src/share/vm/runtime/virtualspace.cpp b/src/share/vm/runtime/virtualspace.cpp +--- a/src/share/vm/runtime/virtualspace.cpp ++++ b/src/share/vm/runtime/virtualspace.cpp +@@ -527,7 +527,7 @@ ReservedHeapSpace::ReservedHeapSpace(size_t size, size_t alignment, + (UseCompressedOops && (Universe::narrow_oop_base() != NULL) && + Universe::narrow_oop_use_implicit_null_checks()) ? + lcm(os::vm_page_size(), alignment) : 0) { +- if (base() > 0) { ++ if (base() != NULL) { + MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap); + } + +@@ -546,7 +546,7 @@ ReservedHeapSpace::ReservedHeapSpace(const size_t prefix_size, + (UseCompressedOops && (Universe::narrow_oop_base() != NULL) && + Universe::narrow_oop_use_implicit_null_checks()) ? + lcm(os::vm_page_size(), prefix_align) : 0) { +- if (base() > 0) { ++ if (base() != NULL) { + MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap); + } + |