jdk: Update port to Freebsd 12

* fix NULL = nullptr in C++ semantic (arm, x86_64)
* arm: disable soft float (full hard float support)
* dummies some mmap flags

issue genodelabs/genode#3289
This commit is contained in:
Sebastian Sumpf
2019-05-17 16:24:31 +02:00
committed by Christian Helmuth
parent c070e64bd4
commit c2f1576ba4
6 changed files with 78 additions and 6 deletions

View File

@@ -1,5 +1,5 @@
CC_OPT = -DINCLUDE_SUFFIX_CPU=_arm -DHOTSPOT_LIB_ARCH='"arm"' -DARM -DARM32 \
-Dlseek64=lseek -D__SOFTFP__
-Dlseek64=lseek
INC_DIR = $(call select_from_ports,jdk)/src/app/jdk/hotspot/src/cpu/arm/vm
JDK_GENERATED = $(call select_from_ports,jdk_generated)/src/app/jdk

View File

@@ -1 +1 @@
1319e74653e97dbabed7ac973345ec6e243cc11b
32a27784725af3c4ed42e3c03bea2b106b578c3d

View File

@@ -11,7 +11,7 @@ HASH_INPUT += $(REP_DIR)/src/app/jdk/files.list
PATCHES := $(addprefix src/app/jdk/patches/,jdk.patch arm.patch \
icache.patch size.patch id.patch lir.patch mutex.patch \
verified_entry.patch vfp.patch)
verified_entry.patch vfp.patch nullptr.patch)
# This patch has to be applied to JDK when building the standard Java library
# pollselectorprovider.patch

View File

@@ -2,6 +2,7 @@
extern "C" {
#include <pwd.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/socket.h>
@@ -25,6 +26,13 @@ extern "C" void collector_func_load(char* name,
{ }
int dirfd(DIR *dirp)
{
WARN_NOT_IMPL;
return -1;
}
int getpwuid_r(uid_t uid, struct passwd *pwd,
char *buf, size_t buflen, struct passwd **result)
{

View File

@@ -2126,7 +2126,7 @@ void bsd_wrap_code(char* base, size_t size) {
if (::write(fd, "", 1) == 1) {
mmap(base, size,
PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_NORESERVE, fd, 0);
MAP_PRIVATE|MAP_FIXED, fd, 0);
}
}
::close(fd);
@@ -2199,7 +2199,7 @@ static char* anon_mmap(char* requested_addr, size_t bytes, bool fixed) {
char * addr;
int flags;
flags = MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS;
flags = MAP_PRIVATE | MAP_ANONYMOUS;
if (fixed) {
assert((uintptr_t)requested_addr % os::Bsd::page_size() == 0, "unaligned address");
flags |= MAP_FIXED;
@@ -4599,7 +4599,7 @@ bool os::pd_uncommit_memory(char* addr, size_t size) {
return ::mprotect(addr, size, PROT_NONE) == 0;
#else
uintptr_t res = (uintptr_t) ::mmap(addr, size, PROT_NONE,
MAP_PRIVATE|MAP_FIXED|MAP_NORESERVE|MAP_ANONYMOUS, -1, 0);
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
return res != (uintptr_t) MAP_FAILED;
#endif
}

View File

@@ -0,0 +1,64 @@
commit f961bd5de9ce37e4f7389d08e585389e719e4cdb
Author: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
Date: Fri May 17 16:18:27 2019 +0200
jdk: remove NULL where it is not meant to be a pointer
diff --git a/hotspot/src/cpu/arm/vm/interpreterRT_arm.cpp b/hotspot/src/cpu/arm/vm/interpreterRT_arm.cpp
index 4925f63..88a6066 100644
--- a/hotspot/src/cpu/arm/vm/interpreterRT_arm.cpp
+++ b/hotspot/src/cpu/arm/vm/interpreterRT_arm.cpp
@@ -365,9 +365,9 @@ class SlowSignatureHandler: public NativeSignatureIterator {
virtual void pass_object() {
intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0));
if(_last_gp < GPR_PARAMS) {
- _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
+ _toGP[_last_gp++] = (*(intptr_t*)from_addr == 0) ? 0 : from_addr;
} else {
- *_to++ = (*(intptr_t*)from_addr == 0) ? NULL : from_addr;
+ *_to++ = (*(intptr_t*)from_addr == 0) ? 0 : from_addr;
}
_from -= Interpreter::stackElementSize;
}
diff --git a/hotspot/src/cpu/arm/vm/sharedRuntime_arm.cpp b/hotspot/src/cpu/arm/vm/sharedRuntime_arm.cpp
index 48f0964..b9fcfbb 100644
--- a/hotspot/src/cpu/arm/vm/sharedRuntime_arm.cpp
+++ b/hotspot/src/cpu/arm/vm/sharedRuntime_arm.cpp
@@ -1467,6 +1467,7 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
#endif // __SOFTFP__
#ifdef __ABI_HARD__
+
case T_FLOAT: {
VMReg src = in_regs[i].first();
VMReg dst = out_regs[i + extra_args].first();
diff --git a/hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp b/hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp
index 40cc9d7..4ea7dce 100644
--- a/hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp
+++ b/hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp
@@ -426,10 +426,10 @@ class SlowSignatureHandler
_from -= Interpreter::stackElementSize;
if (_num_int_args < Argument::n_int_register_parameters_c-1) {
- *_int_args++ = (*from_addr == 0) ? NULL : (intptr_t)from_addr;
+ *_int_args++ = (*from_addr == 0) ? 0 : (intptr_t)from_addr;
_num_int_args++;
} else {
- *_to++ = (*from_addr == 0) ? NULL : (intptr_t) from_addr;
+ *_to++ = (*from_addr == 0) ? 0 : (intptr_t) from_addr;
}
}
diff --git a/hotspot/src/os/bsd/vm/osThread_bsd.cpp b/hotspot/src/os/bsd/vm/osThread_bsd.cpp
index de1383b..1dc113f 100644
--- a/hotspot/src/os/bsd/vm/osThread_bsd.cpp
+++ b/hotspot/src/os/bsd/vm/osThread_bsd.cpp
@@ -30,7 +30,7 @@
void OSThread::pd_initialize() {
assert(this != NULL, "check");
-#ifdef __APPLE__
+#if defined (__APPLE__) || defined (__GENODE__)
_thread_id = 0;
#else
_thread_id = NULL;