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 \
|
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
|
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
|
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 \
|
PATCHES := $(addprefix src/app/jdk/patches/,jdk.patch arm.patch \
|
||||||
icache.patch size.patch id.patch lir.patch mutex.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
|
# This patch has to be applied to JDK when building the standard Java library
|
||||||
# pollselectorprovider.patch
|
# pollselectorprovider.patch
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
#include <dirent.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/socket.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,
|
int getpwuid_r(uid_t uid, struct passwd *pwd,
|
||||||
char *buf, size_t buflen, struct passwd **result)
|
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) {
|
if (::write(fd, "", 1) == 1) {
|
||||||
mmap(base, size,
|
mmap(base, size,
|
||||||
PROT_READ|PROT_WRITE|PROT_EXEC,
|
PROT_READ|PROT_WRITE|PROT_EXEC,
|
||||||
MAP_PRIVATE|MAP_FIXED|MAP_NORESERVE, fd, 0);
|
MAP_PRIVATE|MAP_FIXED, fd, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
::close(fd);
|
::close(fd);
|
||||||
@@ -2199,7 +2199,7 @@ static char* anon_mmap(char* requested_addr, size_t bytes, bool fixed) {
|
|||||||
char * addr;
|
char * addr;
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
flags = MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS;
|
flags = MAP_PRIVATE | MAP_ANONYMOUS;
|
||||||
if (fixed) {
|
if (fixed) {
|
||||||
assert((uintptr_t)requested_addr % os::Bsd::page_size() == 0, "unaligned address");
|
assert((uintptr_t)requested_addr % os::Bsd::page_size() == 0, "unaligned address");
|
||||||
flags |= MAP_FIXED;
|
flags |= MAP_FIXED;
|
||||||
@@ -4599,7 +4599,7 @@ bool os::pd_uncommit_memory(char* addr, size_t size) {
|
|||||||
return ::mprotect(addr, size, PROT_NONE) == 0;
|
return ::mprotect(addr, size, PROT_NONE) == 0;
|
||||||
#else
|
#else
|
||||||
uintptr_t res = (uintptr_t) ::mmap(addr, size, PROT_NONE,
|
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;
|
return res != (uintptr_t) MAP_FAILED;
|
||||||
#endif
|
#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