Hello Mikael,
This is how I get the sources
hg clone http://hg.openjdk.java.net/jdk10/jdk10
cd jdk10
bash get_source.sh
I checked my current build and this is what I see (note the 9
AC_DEFUN([BOOTJDK_CHECK_BUILD_JDK],
[
....
# Extra M4 quote needed to protect [] in grep expression.
[FOUND_CORRECT_VERSION=`echo $BUILD_JDK_VERSION | $EGREP
'\"9([\.+-].*)?\"'`]
if test "x$FOUND_CORRECT_VERSION" = x; then
AC_MSG_NOTICE([Potential Build JDK found at $BUILD_JDK is
incorrect JDK version ($BUILD_JDK_VERSION); ignoring])
AC_MSG_NOTICE([(Your Build JDK must be version 9)])
BUILD_JDK_FOUND=no
....
])
To be sure I wasn't going insane I ran the above (hg clone
http://hg.openjdk.java.net/jdk10/jdk10) in a new directory
Then I noticed something your URL is
http://hg.openjdk.java.net/jdk/jdk10
Mine is (note the extra 10 after .net/jdk)
http://hg.openjdk.java.net/jdk10/jdk10
Maybe I misread something but this is highly confusing as this is what is
in the build docs
I just figured it out as well. I build it from your tree ( note .net/jdk
not ./net/jdk10 http://hg.openjdk.java.net/jdk/jdk10)
<http://hg.openjdk.java.net/jdk/jdk10)and>it works perfectly thanks again.
For Mips You must apply patch ( I did it by hand)
Here is the link for that as well:
https://groups.google.com/forum/#!topic/linux.debian.bugs.dist/Tmgse0HIzDc
Make images works and runs on the qemu.
Thanks for this project and the support I truly appreciate it.
Description: Use sigset_t to store the signals used by the JVM
On mips there are 128 signals so uint64_t is not big enough to store all of
them. Replace the current method of storing the signals with a sigset_t which
will work on all architectures.
Author: James Cowgill <[email protected]>
diff -u b/hotspot/src/os/linux/vm/jsig.c b/hotspot/src/os/linux/vm/jsig.c
--- b/hotspot/src/os/linux/vm/jsig.c
+++ b/hotspot/src/os/linux/vm/jsig.c
@@ -41,13 +41,8 @@
#define true 1
#define false 0
-#define MASK(sig) ((uint64_t)1 << (sig-1)) // 0 is not a signal.
-// Check whether all signals fit into jvmsigs. -1 as MASK shifts by -1.
-#if (64 < NSIG-1)
-#error "Not all signals can be encoded in jvmsigs. Adapt its type!"
-#endif
static struct sigaction sact[NSIG]; /* saved signal handlers */
-static uint64_t jvmsigs = 0; /* signals used by jvm */
+static sigset_t jvmsigs; /* signals used by jvm */
/* used to synchronize the installation of signal handlers */
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -65,6 +60,11 @@
static bool jvm_signal_installing = false;
static bool jvm_signal_installed = false;
+static __attribute__((constructor)) void jvmsigs_init(void)
+{
+ sigemptyset(&jvmsigs);
+}
+
static void signal_lock() {
pthread_mutex_lock(&mutex);
/* When the jvm is installing its set of signal handlers, threads
@@ -110,7 +110,7 @@
signal_lock();
- sigused = (sig < NSIG) && ((MASK(sig) & jvmsigs) != 0);
+ sigused = (sig < NSIG) && sigismember(&jvmsigs, sig);
if (jvm_signal_installed && sigused) {
/* jvm has installed its signal handler for this signal. */
/* Save the handler. Don't really install it. */
@@ -127,7 +127,7 @@
save_signal_handler(sig, oldhandler);
/* Record the signals used by jvm */
- jvmsigs |= MASK(sig);
+ sigaddset(&jvmsigs, sig);
signal_unlock();
return oldhandler;
@@ -168,7 +168,7 @@
signal_lock();
- sigused = (sig < NSIG) && ((MASK(sig) & jvmsigs) != 0);
+ sigused = (sig < NSIG) && sigismember(&jvmsigs, sig);
if (jvm_signal_installed && sigused) {
/* jvm has installed its signal handler for this signal. */
/* Save the handler. Don't really install it. */
@@ -191,7 +191,7 @@
}
/* Record the signals used by jvm */
- jvmsigs |= MASK(sig);
+ sigaddset(&jvmsigs, sig);
signal_unlock();
return res;
@@ -223,7 +223,7 @@
struct sigaction *JVM_get_signal_action(int sig) {
/* Does race condition make sense here? */
- if ((MASK(sig) & jvmsigs) != 0) {
+ if (sigismember(&jvmsigs, sig)) {
return &sact[sig];
}
return NULL;
only in patch2:
unchanged:
--- a/hotspot/src/os/linux/vm/os_linux.cpp
+++ b/hotspot/src/os/linux/vm/os_linux.cpp
@@ -4206,14 +4206,16 @@ bool os::Linux::signal_handlers_are_inst
// For signal-chaining
struct sigaction sigact[NSIG];
-uint64_t sigs = 0;
-#if (64 < NSIG-1)
-#error "Not all signals can be encoded in sigs. Adapt its type!"
-#endif
+sigset_t sigs;
bool os::Linux::libjsig_is_loaded = false;
typedef struct sigaction *(*get_signal_t)(int);
get_signal_t os::Linux::get_signal_action = NULL;
+static __attribute__((constructor)) void sigs_init()
+{
+ sigemptyset(&sigs);
+}
+
struct sigaction* os::Linux::get_chained_signal_action(int sig) {
struct sigaction *actp = NULL;
@@ -4288,7 +4290,7 @@ bool os::Linux::chained_handler(int sig,
}
struct sigaction* os::Linux::get_preinstalled_handler(int sig) {
- if ((((uint64_t)1 << (sig-1)) & sigs) != 0) {
+ if (sigismember(&sigs, sig)) {
return &sigact[sig];
}
return NULL;
@@ -4297,7 +4299,7 @@ struct sigaction* os::Linux::get_preinst
void os::Linux::save_preinstalled_handler(int sig, struct sigaction& oldAct) {
assert(sig > 0 && sig < NSIG, "vm signal out of expected range");
sigact[sig] = oldAct;
- sigs |= (uint64_t)1 << (sig-1);
+ sigaddset(&sigs, sig);
}
// for diagnostic