mirror of
https://github.com/void-linux/void-packages.git
synced 2025-06-07 07:33:48 +02:00
New package: openjdk15-bootstrap-15.0.3+3
This commit is contained in:
parent
df27735092
commit
defe93c94d
7 changed files with 689 additions and 0 deletions
10
srcpkgs/openjdk15-bootstrap/files/musl_patches/aarch64.patch
Normal file
10
srcpkgs/openjdk15-bootstrap/files/musl_patches/aarch64.patch
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- a/src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp
|
||||||
|
+++ b/src/hotspot/os_cpu/linux_aarch64/os_linux_aarch64.cpp
|
||||||
|
@@ -74,7 +74,6 @@
|
||||||
|
# include <pwd.h>
|
||||||
|
# include <poll.h>
|
||||||
|
# include <ucontext.h>
|
||||||
|
-# include <fpu_control.h>
|
||||||
|
|
||||||
|
#define REG_FP 29
|
||||||
|
#define REG_LR 30
|
21
srcpkgs/openjdk15-bootstrap/files/musl_patches/arm.patch
Normal file
21
srcpkgs/openjdk15-bootstrap/files/musl_patches/arm.patch
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
--- a/src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp
|
||||||
|
+++ b/src/hotspot/os_cpu/linux_arm/os_linux_arm.cpp
|
||||||
|
@@ -73,6 +73,18 @@
|
||||||
|
# include <ucontext.h>
|
||||||
|
# include <asm/ptrace.h>
|
||||||
|
|
||||||
|
+// Stupid hack as the origin if below doesnt compile with gcc 8.2.0:
|
||||||
|
+//
|
||||||
|
+// os_linux_arm.cpp:114:5: error: missing binary operator before token "("
|
||||||
|
+// #if NGREG == 16
|
||||||
|
+// ^~~~~
|
||||||
|
+//
|
||||||
|
+// The NGREG is 18 (bits/signal.h:10), so force it to that value.
|
||||||
|
+#ifdef NGREG
|
||||||
|
+# undef NGREG
|
||||||
|
+#endif
|
||||||
|
+#define NGREG 18
|
||||||
|
+
|
||||||
|
#define SPELL_REG_SP "sp"
|
||||||
|
|
||||||
|
// Don't #define SPELL_REG_FP for thumb because it is not safe to use, so this makes sure we never fetch it.
|
333
srcpkgs/openjdk15-bootstrap/files/musl_patches/build.patch
Normal file
333
srcpkgs/openjdk15-bootstrap/files/musl_patches/build.patch
Normal file
|
@ -0,0 +1,333 @@
|
||||||
|
--- a/make/ReleaseFile.gmk
|
||||||
|
+++ b/make/ReleaseFile.gmk
|
||||||
|
@@ -53,6 +53,7 @@ define create-info-file
|
||||||
|
$(call info-file-item, "JAVA_VERSION_DATE", "$(VERSION_DATE)")
|
||||||
|
$(call info-file-item, "OS_NAME", "$(RELEASE_FILE_OS_NAME)")
|
||||||
|
$(call info-file-item, "OS_ARCH", "$(RELEASE_FILE_OS_ARCH)")
|
||||||
|
+ $(call info-file-item, "LIBC", "musl")
|
||||||
|
endef
|
||||||
|
|
||||||
|
# Param 1 - The file containing the MODULES list
|
||||||
|
--- a/make/hotspot/lib/CompileJvm.gmk
|
||||||
|
+++ b/make/hotspot/lib/CompileJvm.gmk
|
||||||
|
@@ -73,6 +73,7 @@ CFLAGS_VM_VERSION := \
|
||||||
|
-DHOTSPOT_BUILD_USER='"$(USERNAME)"' \
|
||||||
|
-DHOTSPOT_VM_DISTRO='"$(HOTSPOT_VM_DISTRO)"' \
|
||||||
|
-DCPU='"$(OPENJDK_TARGET_CPU_VM_VERSION)"' \
|
||||||
|
+ -DLIBC='"musl"' \
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
--- a/make/modules/java.base/lib/CoreLibraries.gmk
|
||||||
|
+++ b/make/modules/java.base/lib/CoreLibraries.gmk
|
||||||
|
@@ -190,6 +190,7 @@ ifeq ($(call isTargetOs, windows), true)
|
||||||
|
endif
|
||||||
|
|
||||||
|
LIBJLI_CFLAGS += $(LIBZ_CFLAGS)
|
||||||
|
+LIBJLI_CFLAGS += -DLIBC=\"musl\"
|
||||||
|
|
||||||
|
ifneq ($(USE_EXTERNAL_LIBZ), true)
|
||||||
|
LIBJLI_EXTRA_FILES += \
|
||||||
|
--- a/src/hotspot/os/linux/os_linux.cpp
|
||||||
|
+++ b/src/hotspot/os/linux/os_linux.cpp
|
||||||
|
@@ -102,7 +102,6 @@
|
||||||
|
# include <string.h>
|
||||||
|
# include <syscall.h>
|
||||||
|
# include <sys/sysinfo.h>
|
||||||
|
-# include <gnu/libc-version.h>
|
||||||
|
# include <sys/ipc.h>
|
||||||
|
# include <sys/shm.h>
|
||||||
|
# include <link.h>
|
||||||
|
@@ -597,6 +596,12 @@ void os::Linux::hotspot_sigmask(Thread* thread) {
|
||||||
|
// detecting pthread library
|
||||||
|
|
||||||
|
void os::Linux::libpthread_init() {
|
||||||
|
+#if !defined(__GLIBC__) && !defined(__UCLIBC__)
|
||||||
|
+ // Hard code Alpine Linux supported musl compatible settings
|
||||||
|
+ // sgn: NPTL is correct, don't know about glibc 2.9, alpine's thing?
|
||||||
|
+ os::Linux::set_glibc_version("glibc 2.9");
|
||||||
|
+ os::Linux::set_libpthread_version("NPTL");
|
||||||
|
+#else
|
||||||
|
// Save glibc and pthread version strings.
|
||||||
|
#if !defined(_CS_GNU_LIBC_VERSION) || \
|
||||||
|
!defined(_CS_GNU_LIBPTHREAD_VERSION)
|
||||||
|
@@ -614,6 +619,7 @@ void os::Linux::libpthread_init() {
|
||||||
|
str = (char *)malloc(n, mtInternal);
|
||||||
|
confstr(_CS_GNU_LIBPTHREAD_VERSION, str, n);
|
||||||
|
os::Linux::set_libpthread_version(str);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
@@ -3117,20 +3123,36 @@ void os::Linux::sched_getcpu_init() {
|
||||||
|
extern "C" JNIEXPORT void numa_warn(int number, char *where, ...) { }
|
||||||
|
extern "C" JNIEXPORT void numa_error(char *where) { }
|
||||||
|
|
||||||
|
+static void* dlvsym_if_available(void* handle, const char* name, const char* version) {
|
||||||
|
+ typedef void* (*dlvsym_func_type)(void* handle, const char* name, const char* version);
|
||||||
|
+ static dlvsym_func_type dlvsym_func;
|
||||||
|
+ static bool initialized = false;
|
||||||
|
+
|
||||||
|
+ if (!initialized) {
|
||||||
|
+ dlvsym_func = (dlvsym_func_type)dlsym(RTLD_NEXT, "dlvsym");
|
||||||
|
+ initialized = true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (dlvsym_func != NULL) {
|
||||||
|
+ void *f = dlvsym_func(handle, name, version);
|
||||||
|
+ if (f != NULL) {
|
||||||
|
+ return f;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return dlsym(handle, name);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// Handle request to load libnuma symbol version 1.1 (API v1). If it fails
|
||||||
|
// load symbol from base version instead.
|
||||||
|
void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
|
||||||
|
- void *f = dlvsym(handle, name, "libnuma_1.1");
|
||||||
|
- if (f == NULL) {
|
||||||
|
- f = dlsym(handle, name);
|
||||||
|
- }
|
||||||
|
- return f;
|
||||||
|
+ return dlvsym_if_available(handle, name, "libnuma_1.1");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle request to load libnuma symbol version 1.2 (API v2) only.
|
||||||
|
// Return NULL if the symbol is not defined in this particular version.
|
||||||
|
void* os::Linux::libnuma_v2_dlsym(void* handle, const char* name) {
|
||||||
|
- return dlvsym(handle, name, "libnuma_1.2");
|
||||||
|
+ return dlvsym_if_available(handle, name, "libnuma_1.2");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool os::Linux::libnuma_init() {
|
||||||
|
--- a/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
|
||||||
|
+++ b/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
|
||||||
|
@@ -75,9 +75,6 @@
|
||||||
|
# include <pwd.h>
|
||||||
|
# include <poll.h>
|
||||||
|
# include <ucontext.h>
|
||||||
|
-#ifndef AMD64
|
||||||
|
-# include <fpu_control.h>
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
#ifdef AMD64
|
||||||
|
#define REG_SP REG_RSP
|
||||||
|
--- a/src/hotspot/share/gc/shared/genCollectedHeap.cpp
|
||||||
|
+++ b/src/hotspot/share/gc/shared/genCollectedHeap.cpp
|
||||||
|
@@ -1116,7 +1116,7 @@ HeapWord* GenCollectedHeap::allocate_new_tlab(size_t min_size,
|
||||||
|
static ScratchBlock *removeSmallestScratch(ScratchBlock **prev_ptr) {
|
||||||
|
bool first = true;
|
||||||
|
size_t min_size = 0; // "first" makes this conceptually infinite.
|
||||||
|
- ScratchBlock **smallest_ptr, *smallest;
|
||||||
|
+ ScratchBlock **smallest_ptr = NULL, *smallest;
|
||||||
|
ScratchBlock *cur = *prev_ptr;
|
||||||
|
while (cur) {
|
||||||
|
assert(*prev_ptr == cur, "just checking");
|
||||||
|
--- a/src/hotspot/share/runtime/abstract_vm_version.cpp
|
||||||
|
+++ b/src/hotspot/share/runtime/abstract_vm_version.cpp
|
||||||
|
@@ -262,7 +262,7 @@ const char* Abstract_VM_Version::internal_vm_info_string() {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define INTERNAL_VERSION_SUFFIX VM_RELEASE ")" \
|
||||||
|
- " for " OS "-" CPU FLOAT_ARCH_STR \
|
||||||
|
+ " for " OS "-" CPU FLOAT_ARCH_STR LIBC \
|
||||||
|
" JRE (" VERSION_STRING "), built on " HOTSPOT_BUILD_TIME \
|
||||||
|
" by " XSTR(HOTSPOT_BUILD_USER) " with " HOTSPOT_BUILD_COMPILER
|
||||||
|
|
||||||
|
--- a/src/hotspot/share/utilities/globalDefinitions_gcc.hpp
|
||||||
|
+++ b/src/hotspot/share/utilities/globalDefinitions_gcc.hpp
|
||||||
|
@@ -204,7 +204,7 @@ inline int g_isnan(double f) { return isnand(f); }
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
inline int g_isnan(double f) { return isnan(f); }
|
||||||
|
#elif defined(LINUX) || defined(_ALLBSD_SOURCE)
|
||||||
|
-inline int g_isnan(float f) { return isnanf(f); }
|
||||||
|
+inline int g_isnan(float f) { return isnan(f); }
|
||||||
|
inline int g_isnan(double f) { return isnan(f); }
|
||||||
|
#else
|
||||||
|
#error "missing platform-specific definition here"
|
||||||
|
--- a/src/java.base/linux/native/libnet/linux_close.c
|
||||||
|
+++ b/src/java.base/linux/native/libnet/linux_close.c
|
||||||
|
@@ -60,7 +60,7 @@ typedef struct {
|
||||||
|
/*
|
||||||
|
* Signal to unblock thread
|
||||||
|
*/
|
||||||
|
-static int sigWakeup = (__SIGRTMAX - 2);
|
||||||
|
+static int sigWakeup;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fdTable holds one entry per file descriptor, up to a certain
|
||||||
|
@@ -149,6 +149,7 @@ static void __attribute((constructor)) init() {
|
||||||
|
/*
|
||||||
|
* Setup the signal handler
|
||||||
|
*/
|
||||||
|
+ sigWakeup = SIGRTMAX - 2;
|
||||||
|
sa.sa_handler = sig_wakeup;
|
||||||
|
sa.sa_flags = 0;
|
||||||
|
sigemptyset(&sa.sa_mask);
|
||||||
|
--- a/src/java.base/unix/native/libjava/childproc.c
|
||||||
|
+++ b/src/java.base/unix/native/libjava/childproc.c
|
||||||
|
@@ -235,7 +235,13 @@ JDK_execvpe(int mode, const char *file,
|
||||||
|
{
|
||||||
|
if (envp == NULL || (char **) envp == environ) {
|
||||||
|
execvp(file, (char **) argv);
|
||||||
|
- return;
|
||||||
|
+ // ENOEXEC indicates that the file header was not recognized. The musl C
|
||||||
|
+ // library does not implement the fallback to /bin/sh for that case, so fall
|
||||||
|
+ // through to the code below which implements that fallback using
|
||||||
|
+ // execve_with_shell_fallback.
|
||||||
|
+ if (errno != ENOEXEC) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*file == '\0') {
|
||||||
|
--- a/src/java.base/unix/native/libjava/jdk_util_md.h
|
||||||
|
+++ b/src/java.base/unix/native/libjava/jdk_util_md.h
|
||||||
|
@@ -37,7 +37,7 @@
|
||||||
|
#define ISNAND(d) isnan(d)
|
||||||
|
#elif defined(__linux__) || defined(_ALLBSD_SOURCE)
|
||||||
|
#include <math.h>
|
||||||
|
-#define ISNANF(f) isnanf(f)
|
||||||
|
+#define ISNANF(f) isnan(f)
|
||||||
|
#define ISNAND(d) isnan(d)
|
||||||
|
#elif defined(_AIX)
|
||||||
|
#include <math.h>
|
||||||
|
--- a/src/java.base/unix/native/libjli/java_md.c
|
||||||
|
+++ b/src/java.base/unix/native/libjli/java_md.c
|
||||||
|
@@ -230,6 +230,39 @@ RequiresSetenv(const char *jvmpath) {
|
||||||
|
char *dmllp = NULL;
|
||||||
|
char *p; /* a utility pointer */
|
||||||
|
|
||||||
|
+#ifdef __linux
|
||||||
|
+#ifndef LIBC
|
||||||
|
+#error "LIBC not set"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ if (strcmp(LIBC, "musl") == 0) {
|
||||||
|
+ /*
|
||||||
|
+ * The musl library loader requires LD_LIBRARY_PATH to be set in
|
||||||
|
+ * order to correctly resolve the dependency libjava.so has on libjvm.so.
|
||||||
|
+ *
|
||||||
|
+ * Specifically, it differs from glibc in the sense that even if
|
||||||
|
+ * libjvm.so has already been loaded it will not be considered a
|
||||||
|
+ * candidate for resolving the dependency unless the *full* path
|
||||||
|
+ * of the already loaded library matches the dependency being loaded.
|
||||||
|
+ *
|
||||||
|
+ * libjvm.so is being loaded by the launcher using a long path to
|
||||||
|
+ * dlopen, not just the basename of the library. Typically this
|
||||||
|
+ * is something like "../lib/server/libjvm.so". However, if/when
|
||||||
|
+ * libjvm.so later tries to dlopen libjava.so (which it does in
|
||||||
|
+ * order to get access to a few functions implemented in
|
||||||
|
+ * libjava.so) the musl loader will, as part of loading
|
||||||
|
+ * dependent libraries, try to load libjvm.so using only its
|
||||||
|
+ * basename "libjvm.so". Since this does not match the longer
|
||||||
|
+ * path path it was first loaded with, the already loaded
|
||||||
|
+ * library is not considered a candidate, and the loader will
|
||||||
|
+ * instead look for libjvm.so elsewhere. If it's not in
|
||||||
|
+ * LD_LIBRARY_PATH the dependency load will fail, and libjava.so
|
||||||
|
+ * will therefore fail as well.
|
||||||
|
+ */
|
||||||
|
+ return JNI_TRUE;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef AIX
|
||||||
|
/* We always have to set the LIBPATH on AIX because ld doesn't support $ORIGIN. */
|
||||||
|
return JNI_TRUE;
|
||||||
|
--- a/src/java.base/unix/native/libnio/ch/NativeThread.c
|
||||||
|
+++ b/src/java.base/unix/native/libnio/ch/NativeThread.c
|
||||||
|
@@ -36,7 +36,7 @@
|
||||||
|
#ifdef __linux__
|
||||||
|
#include <pthread.h>
|
||||||
|
/* Also defined in net/linux_close.c */
|
||||||
|
- #define INTERRUPT_SIGNAL (__SIGRTMAX - 2)
|
||||||
|
+ #define INTERRUPT_SIGNAL (SIGRTMAX - 2)
|
||||||
|
#elif defined(_AIX)
|
||||||
|
#include <pthread.h>
|
||||||
|
/* Also defined in net/aix_close.c */
|
||||||
|
--- a/src/jdk.jdwp.agent/share/native/libjdwp/util.h
|
||||||
|
+++ b/src/jdk.jdwp.agent/share/native/libjdwp/util.h
|
||||||
|
@@ -35,15 +35,15 @@
|
||||||
|
#ifdef DEBUG
|
||||||
|
/* Just to make sure these interfaces are not used here. */
|
||||||
|
#undef free
|
||||||
|
- #define free(p) Do not use this interface.
|
||||||
|
+ #define free do_not_use_this_interface_free
|
||||||
|
#undef malloc
|
||||||
|
- #define malloc(p) Do not use this interface.
|
||||||
|
+ #define malloc do_not_use_this_interface_malloc
|
||||||
|
#undef calloc
|
||||||
|
- #define calloc(p) Do not use this interface.
|
||||||
|
+ #define calloc do_not_use_this_interface_calloc
|
||||||
|
#undef realloc
|
||||||
|
- #define realloc(p) Do not use this interface.
|
||||||
|
+ #define realloc do_not_use_this_interface_realloc
|
||||||
|
#undef strdup
|
||||||
|
- #define strdup(p) Do not use this interface.
|
||||||
|
+ #define strdup do_not_use_this_interface_strdup
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "log_messages.h"
|
||||||
|
--- a/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c
|
||||||
|
+++ b/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c
|
||||||
|
@@ -33,6 +33,7 @@
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <jni.h>
|
||||||
|
+#include <jvm.h>
|
||||||
|
#include <alloca.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <string.h>
|
||||||
|
@@ -91,6 +92,20 @@ void set_signal_handler() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+int get_java_stacksize () {
|
||||||
|
+ size_t stacksize;
|
||||||
|
+ pthread_attr_t attr;
|
||||||
|
+ JDK1_1InitArgs jdk_args;
|
||||||
|
+
|
||||||
|
+ jdk_args.version = JNI_VERSION_1_1;
|
||||||
|
+ JNI_GetDefaultJavaVMInitArgs(&jdk_args);
|
||||||
|
+ if (jdk_args.javaStackSize <= 0) {
|
||||||
|
+ fprintf(stderr, "Test ERROR. Can't get a valid value for the default stacksize.\n");
|
||||||
|
+ exit(7);
|
||||||
|
+ }
|
||||||
|
+ return jdk_args.javaStackSize;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void *run_java_overflow (void *p) {
|
||||||
|
JNIEnv *env;
|
||||||
|
jclass class_id;
|
||||||
|
@@ -258,13 +273,19 @@ int main (int argc, const char** argv) {
|
||||||
|
exit(7);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ int stack_size = get_java_stacksize();
|
||||||
|
pthread_t thr;
|
||||||
|
+ pthread_attr_t thread_attr;
|
||||||
|
+
|
||||||
|
+ pthread_attr_init(&thread_attr);
|
||||||
|
+ pthread_attr_setstacksize(&thread_attr, stack_size);
|
||||||
|
|
||||||
|
if (argc > 1 && strcmp(argv[1], "test_java_overflow") == 0) {
|
||||||
|
printf("\nTesting JAVA_OVERFLOW\n");
|
||||||
|
|
||||||
|
printf("Testing stack guard page behaviour for other thread\n");
|
||||||
|
- pthread_create (&thr, NULL, run_java_overflow, NULL);
|
||||||
|
+
|
||||||
|
+ pthread_create (&thr, &thread_attr, run_java_overflow, NULL);
|
||||||
|
pthread_join (thr, NULL);
|
||||||
|
|
||||||
|
printf("Testing stack guard page behaviour for initial thread\n");
|
||||||
|
@@ -277,7 +298,7 @@ int main (int argc, const char** argv) {
|
||||||
|
printf("\nTesting NATIVE_OVERFLOW\n");
|
||||||
|
|
||||||
|
printf("Testing stack guard page behaviour for other thread\n");
|
||||||
|
- pthread_create (&thr, NULL, run_native_overflow, NULL);
|
||||||
|
+ pthread_create (&thr, &thread_attr, run_native_overflow, NULL);
|
||||||
|
pthread_join (thr, NULL);
|
||||||
|
|
||||||
|
printf("Testing stack guard page behaviour for initial thread\n");
|
24
srcpkgs/openjdk15-bootstrap/files/musl_patches/check.patch
Normal file
24
srcpkgs/openjdk15-bootstrap/files/musl_patches/check.patch
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
--- a/test/hotspot/jtreg/runtime/TLS/exestack-tls.c
|
||||||
|
+++ b/test/hotspot/jtreg/runtime/TLS/exestack-tls.c
|
||||||
|
@@ -26,7 +26,6 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
-#include <gnu/libc-version.h>
|
||||||
|
|
||||||
|
// Declare the thread local variable(s) in the main executable. This can be
|
||||||
|
// used to demonstrate the issues associated with the on-stack static TLS blocks
|
||||||
|
@@ -56,13 +55,6 @@
|
||||||
|
|
||||||
|
// glibc 2.15 introduced __pthread_get_minstack
|
||||||
|
int glibc_has_pthread_get_minstack() {
|
||||||
|
- const char* glibc_vers = gnu_get_libc_version();
|
||||||
|
- const int glibc_vers_major = atoi(glibc_vers);
|
||||||
|
- const int glibc_vers_minor = atoi(strchr(glibc_vers, '.') + 1);;
|
||||||
|
- printf("GNU libc version: %s\n", glibc_vers);
|
||||||
|
- if ((glibc_vers_major > 2) || ((glibc_vers_major == 2) && (glibc_vers_minor >= 15))) {
|
||||||
|
- return 1;
|
||||||
|
- }
|
||||||
|
printf("This version does not provide __pthread_get_minstack\n");
|
||||||
|
return 0;
|
||||||
|
}
|
45
srcpkgs/openjdk15-bootstrap/files/musl_patches/ppc.patch
Normal file
45
srcpkgs/openjdk15-bootstrap/files/musl_patches/ppc.patch
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
Patches for musl taken from Alpine linux: https://git.alpinelinux.org/aports/commit/?id=8a1ae17d4a9af54285c7891a680620e7e24c6280
|
||||||
|
--- old/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp
|
||||||
|
+++ new/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp
|
||||||
|
@@ -47,6 +47,8 @@
|
||||||
|
#include "opto/intrinsicnode.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#include <asm/ptrace.h>
|
||||||
|
+
|
||||||
|
#ifdef PRODUCT
|
||||||
|
#define BLOCK_COMMENT(str) // nothing
|
||||||
|
#else
|
||||||
|
--- old/src/hotspot/cpu/ppc/vm_version_ppc.cpp
|
||||||
|
+++ new/src/hotspot/cpu/ppc/vm_version_ppc.cpp
|
||||||
|
@@ -845,7 +845,7 @@ void VM_Version::determine_features() {
|
||||||
|
unsigned long auxv = getauxval(AT_HWCAP2);
|
||||||
|
|
||||||
|
if (auxv & PPC_FEATURE2_HTM_NOSC) {
|
||||||
|
- if (auxv & PPC_FEATURE2_HAS_HTM) {
|
||||||
|
+ if (auxv & PPC_FEATURE2_HTM) {
|
||||||
|
// TM on POWER8 and POWER9 in compat mode (VM) is supported by the JVM.
|
||||||
|
// TM on POWER9 DD2.1 NV (baremetal) is not supported by the JVM (TM on
|
||||||
|
// POWER9 DD2.1 NV has a few issues that need a couple of firmware
|
||||||
|
--- old/src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp
|
||||||
|
+++ new/src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp
|
||||||
|
@@ -75,7 +75,7 @@
|
||||||
|
# include <pwd.h>
|
||||||
|
# include <poll.h>
|
||||||
|
# include <ucontext.h>
|
||||||
|
-
|
||||||
|
+# include <asm/ptrace.h>
|
||||||
|
|
||||||
|
address os::current_stack_pointer() {
|
||||||
|
intptr_t* csp;
|
||||||
|
--- old/src/hotspot/os_cpu/linux_ppc/thread_linux_ppc.cpp
|
||||||
|
+++ new/src/hotspot/os_cpu/linux_ppc/thread_linux_ppc.cpp
|
||||||
|
@@ -23,6 +23,8 @@
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#include <asm/ptrace.h>
|
||||||
|
+
|
||||||
|
#include "precompiled.hpp"
|
||||||
|
#include "runtime/frame.inline.hpp"
|
||||||
|
#include "runtime/thread.hpp"
|
130
srcpkgs/openjdk15-bootstrap/files/musl_patches/x86.patch
Normal file
130
srcpkgs/openjdk15-bootstrap/files/musl_patches/x86.patch
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
Patches for musl taken from Alpine linux: https://git.alpinelinux.org/aports/commit/?id=8a1ae17d4a9af54285c7891a680620e7e24c6280
|
||||||
|
--- old/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
|
||||||
|
+++ new/src/hotspot/os_cpu/linux_x86/os_linux_x86.cpp
|
||||||
|
@@ -90,6 +90,126 @@
|
||||||
|
#define SPELL_REG_FP "ebp"
|
||||||
|
#endif // AMD64
|
||||||
|
|
||||||
|
+// ==============================================================================
|
||||||
|
+// Taken from glibc 2.28
|
||||||
|
+// source: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86/fpu_control.h;h=4cb98c5679b2897ff4e5826d228cba6be589e24d;hb=3c03baca37fdcb52c3881e653ca392bba7a99c2b
|
||||||
|
+// ==============================================================================
|
||||||
|
+#ifndef AMD64
|
||||||
|
+/* FPU control word bits. x86 version.
|
||||||
|
+ Copyright (C) 1993-2018 Free Software Foundation, Inc.
|
||||||
|
+ This file is part of the GNU C Library.
|
||||||
|
+ Contributed by Olaf Flebbe.
|
||||||
|
+
|
||||||
|
+ The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
+ modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ License as published by the Free Software Foundation; either
|
||||||
|
+ version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+
|
||||||
|
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ Lesser General Public License for more details.
|
||||||
|
+
|
||||||
|
+ You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ License along with the GNU C Library; if not, see
|
||||||
|
+ <http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+#ifndef _FPU_CONTROL_H
|
||||||
|
+#define _FPU_CONTROL_H 1
|
||||||
|
+
|
||||||
|
+/* Note that this file sets on x86-64 only the x87 FPU, it does not
|
||||||
|
+ touch the SSE unit. */
|
||||||
|
+
|
||||||
|
+/* Here is the dirty part. Set up your 387 through the control word
|
||||||
|
+ * (cw) register.
|
||||||
|
+ *
|
||||||
|
+ * 15-13 12 11-10 9-8 7-6 5 4 3 2 1 0
|
||||||
|
+ * | reserved | IC | RC | PC | reserved | PM | UM | OM | ZM | DM | IM
|
||||||
|
+ *
|
||||||
|
+ * IM: Invalid operation mask
|
||||||
|
+ * DM: Denormalized operand mask
|
||||||
|
+ * ZM: Zero-divide mask
|
||||||
|
+ * OM: Overflow mask
|
||||||
|
+ * UM: Underflow mask
|
||||||
|
+ * PM: Precision (inexact result) mask
|
||||||
|
+ *
|
||||||
|
+ * Mask bit is 1 means no interrupt.
|
||||||
|
+ *
|
||||||
|
+ * PC: Precision control
|
||||||
|
+ * 11 - round to extended precision
|
||||||
|
+ * 10 - round to double precision
|
||||||
|
+ * 00 - round to single precision
|
||||||
|
+ *
|
||||||
|
+ * RC: Rounding control
|
||||||
|
+ * 00 - rounding to nearest
|
||||||
|
+ * 01 - rounding down (toward - infinity)
|
||||||
|
+ * 10 - rounding up (toward + infinity)
|
||||||
|
+ * 11 - rounding toward zero
|
||||||
|
+ *
|
||||||
|
+ * IC: Infinity control
|
||||||
|
+ * That is for 8087 and 80287 only.
|
||||||
|
+ *
|
||||||
|
+ * The hardware default is 0x037f which we use.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <features.h>
|
||||||
|
+
|
||||||
|
+/* masking of interrupts */
|
||||||
|
+#define _FPU_MASK_IM 0x01
|
||||||
|
+#define _FPU_MASK_DM 0x02
|
||||||
|
+#define _FPU_MASK_ZM 0x04
|
||||||
|
+#define _FPU_MASK_OM 0x08
|
||||||
|
+#define _FPU_MASK_UM 0x10
|
||||||
|
+#define _FPU_MASK_PM 0x20
|
||||||
|
+
|
||||||
|
+/* precision control */
|
||||||
|
+#define _FPU_EXTENDED 0x300 /* libm requires double extended precision. */
|
||||||
|
+#define _FPU_DOUBLE 0x200
|
||||||
|
+#define _FPU_SINGLE 0x0
|
||||||
|
+
|
||||||
|
+/* rounding control */
|
||||||
|
+#define _FPU_RC_NEAREST 0x0 /* RECOMMENDED */
|
||||||
|
+#define _FPU_RC_DOWN 0x400
|
||||||
|
+#define _FPU_RC_UP 0x800
|
||||||
|
+#define _FPU_RC_ZERO 0xC00
|
||||||
|
+
|
||||||
|
+#define _FPU_RESERVED 0xF0C0 /* Reserved bits in cw */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/* The fdlibm code requires strict IEEE double precision arithmetic,
|
||||||
|
+ and no interrupts for exceptions, rounding to nearest. */
|
||||||
|
+
|
||||||
|
+#define _FPU_DEFAULT 0x037f
|
||||||
|
+
|
||||||
|
+/* IEEE: same as above. */
|
||||||
|
+#define _FPU_IEEE 0x037f
|
||||||
|
+
|
||||||
|
+/* Type of the control word. */
|
||||||
|
+typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__)));
|
||||||
|
+
|
||||||
|
+/* Macros for accessing the hardware control word. "*&" is used to
|
||||||
|
+ work around a bug in older versions of GCC. __volatile__ is used
|
||||||
|
+ to support combination of writing the control register and reading
|
||||||
|
+ it back. Without __volatile__, the old value may be used for reading
|
||||||
|
+ back under compiler optimization.
|
||||||
|
+
|
||||||
|
+ Note that the use of these macros is not sufficient anymore with
|
||||||
|
+ recent hardware nor on x86-64. Some floating point operations are
|
||||||
|
+ executed in the SSE/SSE2 engines which have their own control and
|
||||||
|
+ status register. */
|
||||||
|
+#define _FPU_GETCW(cw) __asm__ __volatile__ ("fnstcw %0" : "=m" (*&cw))
|
||||||
|
+#define _FPU_SETCW(cw) __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw))
|
||||||
|
+
|
||||||
|
+/* Default control word set at startup. */
|
||||||
|
+extern fpu_control_t __fpu_control;
|
||||||
|
+
|
||||||
|
+#endif /* fpu_control.h */
|
||||||
|
+
|
||||||
|
+#endif // AMD64
|
||||||
|
+// ==============================================================================
|
||||||
|
+// ==============================================================================
|
||||||
|
+// ==============================================================================
|
||||||
|
+
|
||||||
|
address os::current_stack_pointer() {
|
||||||
|
#ifdef SPARC_WORKS
|
||||||
|
register void *esp;
|
126
srcpkgs/openjdk15-bootstrap/template
Normal file
126
srcpkgs/openjdk15-bootstrap/template
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
# Template file for 'openjdk15-bootstrap'
|
||||||
|
_java_ver=15
|
||||||
|
_java_min_ver=0
|
||||||
|
_java_sec_ver=3
|
||||||
|
_jdk_update=3
|
||||||
|
_jdk_home="usr/lib/jvm/openjdk${_java_ver}"
|
||||||
|
_base_version="${_java_ver}.${_java_min_ver}.${_java_sec_ver}"
|
||||||
|
|
||||||
|
pkgname=openjdk15-bootstrap
|
||||||
|
version="${_base_version}+${_jdk_update}"
|
||||||
|
revision=1
|
||||||
|
wrksrc="jdk${_java_ver}u-jdk-${version}"
|
||||||
|
build_style=gnu-configure
|
||||||
|
configure_args="--disable-warnings-as-errors
|
||||||
|
--prefix=${XBPS_DESTDIR}/${pkgname}-${version}/usr/lib
|
||||||
|
--enable-unlimited-crypto
|
||||||
|
--with-zlib=system
|
||||||
|
--with-libjpeg=system
|
||||||
|
--with-giflib=system
|
||||||
|
--with-libpng=system
|
||||||
|
--with-lcms=system
|
||||||
|
--with-jtreg=no
|
||||||
|
--with-gtest=${XBPS_BUILDDIR}/googletest-release-1.8.1
|
||||||
|
--with-debug-level=release
|
||||||
|
--with-jobs=${XBPS_ORIG_MAKEJOBS}
|
||||||
|
--with-version-pre=
|
||||||
|
--with-version-build=${_jdk_update}
|
||||||
|
--with-version-opt=void-r${revision}
|
||||||
|
--with-vendor-name=Void
|
||||||
|
--with-vendor-url=https://voidlinux.org/
|
||||||
|
--with-vendor-bug-url=https://github.com/void-linux/void-packages/issues
|
||||||
|
--with-vendor-vm-bug-url=https://github.com/void-linux/void-packages/issues
|
||||||
|
--with-boot-jdk=/usr/lib/jvm/openjdk14"
|
||||||
|
make_build_args="images"
|
||||||
|
make_check_target="test-hotspot-gtest"
|
||||||
|
hostmakedepends="pkg-config automake autoconf cpio tar unzip zip ca-certificates
|
||||||
|
libressl zlib-devel which make-ca openjdk14-bootstrap"
|
||||||
|
makedepends="libXrender-devel libXtst-devel libXt-devel libXrandr-devel
|
||||||
|
giflib-devel libjpeg-turbo-devel cups-devel freetype-devel alsa-lib-devel
|
||||||
|
fontconfig-devel zlib-devel lcms2-devel harfbuzz-devel openjdk14-bootstrap"
|
||||||
|
provides="java-environment-${version}_1 java-runtime-${version}_1"
|
||||||
|
short_desc="OpenJDK Java Development Kit (bootstrap version 15)"
|
||||||
|
maintainer="classabbyamp <dev@kb6.ee>"
|
||||||
|
license="GPL-2.0-only WITH Classpath-exception-2.0"
|
||||||
|
homepage="http://openjdk.java.net/"
|
||||||
|
distfiles="https://hg.openjdk.java.net/jdk-updates/jdk${_java_ver}u/archive/jdk-${version}.tar.gz
|
||||||
|
https://github.com/google/googletest/archive/refs/tags/release-1.8.1.tar.gz"
|
||||||
|
checksum="4bbd7a73354a2d244c7a075406339aa0ce4c5fc6be91a795af931f6dc95d067c
|
||||||
|
9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c"
|
||||||
|
nocross=yes
|
||||||
|
|
||||||
|
# Build is still parallel, but don't use -jN.
|
||||||
|
disable_parallel_build=yes
|
||||||
|
|
||||||
|
# no hotspot JIT for ppc32
|
||||||
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
|
ppc64*) ;;
|
||||||
|
ppc*) _use_zero=yes ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -n "$_use_zero" ]; then
|
||||||
|
makedepends+=" libffi-devel"
|
||||||
|
configure_args+=" --with-jvm-variants=zero"
|
||||||
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
|
ppc*) configure_args+=" --with-boot-jdk-jvmargs=-XX:ThreadStackSize=2560";;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$XBPS_DEBUG_PKGS" ]; then
|
||||||
|
configure_args+=" --with-native-debug-symbols=internal"
|
||||||
|
fi
|
||||||
|
|
||||||
|
post_extract() {
|
||||||
|
chmod +x configure
|
||||||
|
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
|
||||||
|
rm -r src/jdk.hotspot.agent
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
post_patch() {
|
||||||
|
if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
|
||||||
|
for f in "${FILESDIR}"/musl_patches/*.patch; do
|
||||||
|
msg_normal "Applying ${f#$FILESDIR/}\n"
|
||||||
|
patch -lNp1 -i "$f"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
do_configure() {
|
||||||
|
CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
|
||||||
|
CXXFLAGS=${CXXFLAGS/-D_FORTIFY_SOURCE=2/}
|
||||||
|
|
||||||
|
# force ELFv2 for ppc64 just in case
|
||||||
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
|
ppc64*)
|
||||||
|
CFLAGS+=" -DABI_ELFv2"
|
||||||
|
CXXFLAGS+=" -DABI_ELFv2"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
configure_args=${configure_args/--with-libtool-sysroot=\/usr\/[a-z0-9]*-linux-[a-z]*/}
|
||||||
|
if [ "$XBPS_CCACHE" ]; then
|
||||||
|
configure_args+=" --enable-ccache"
|
||||||
|
fi
|
||||||
|
CC="/usr/bin/cc"
|
||||||
|
CXX="/usr/bin/c++"
|
||||||
|
./configure ${configure_args} \
|
||||||
|
--with-extra-cflags="$CFLAGS" \
|
||||||
|
--with-extra-cxxflags="$CXXFLAGS" \
|
||||||
|
--with-extra-ldflags="$LDFLAGS" \
|
||||||
|
READELF=$READELF AR=$AR STRIP=$STRIP NM=$NM \
|
||||||
|
OBJDUMP=$OBJDUMP OBJCOPY=$OBJCOPY
|
||||||
|
}
|
||||||
|
|
||||||
|
post_install() {
|
||||||
|
mv ${DESTDIR}/usr/lib/jvm/openjdk-${_base_version} ${DESTDIR}/$_jdk_home
|
||||||
|
rm -rf ${DESTDIR}/usr/lib/bin
|
||||||
|
rm -f $DESTDIR/$_jdk_home/lib/src.zip
|
||||||
|
vlicense ASSEMBLY_EXCEPTION
|
||||||
|
vlicense LICENSE
|
||||||
|
}
|
||||||
|
|
||||||
|
do_clean() {
|
||||||
|
# clean up gtest
|
||||||
|
rm -rf ${XBPS_BUILDDIR}/googletest-release-*
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue