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:
committed by
Christian Helmuth
parent
c070e64bd4
commit
c2f1576ba4
@@ -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
|
||||
|
||||
@@ -1 +1 @@
|
||||
1319e74653e97dbabed7ac973345ec6e243cc11b
|
||||
32a27784725af3c4ed42e3c03bea2b106b578c3d
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
64
src/app/jdk/patches/nullptr.patch
Normal file
64
src/app/jdk/patches/nullptr.patch
Normal 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;
|
||||
Reference in New Issue
Block a user