aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2013-05-08 13:16:38 +0200
committerGuido Günther <agx@sigxcpu.org>2013-05-11 18:30:52 +0200
commit0ba2cfdc6c00dbfc184736e015347472cca13e38 (patch)
tree7beaf752c9565aebbf0206e3d6e3e594f80ede0a
parentae8ff43bd606f5c812f7af78bc818ed74df8425f (diff)
Update kfreebsd-support-hotspot
-rw-r--r--debian/patches/kfreebsd-support-hotspot.diff219
1 files changed, 129 insertions, 90 deletions
diff --git a/debian/patches/kfreebsd-support-hotspot.diff b/debian/patches/kfreebsd-support-hotspot.diff
index d6ca10c..05404b5 100644
--- a/debian/patches/kfreebsd-support-hotspot.diff
+++ b/debian/patches/kfreebsd-support-hotspot.diff
@@ -1,31 +1,31 @@
-Description: Initial GNU/kFreeBSD support for openjdk-7 (Hotspot part)
- - Alter build system to consider GNU/kFreeBSD like linux
- since this port is libc based.
- Also treat i386 arch has i686 (uname -m return i386 on BSD*)
- openjdk/hotspot/make/defs.make
- - Use LOCAL_PEERCRED (from kFreeBSD kernel) instead of
- SO_PEERCRED and alter related structs.
- openjdk/hotspot/src/os/linux/vm/attachListener_linux.cpp
- - Use sysctl call instead of sysinfo.
- openjdk/hotspot/src/os/linux/vm/os_linux.cpp
- - Change access to CPU register
- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
- openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
- openjdk/hotspot/agent/src/os/linux/libproc.h
- openjdk/hotspot/agent/src/os/linux/ps_core.c
- (from bsd-port)
- - Fix ptrace usage under freebsd kernel
- openjdk/hotspot/agent/src/os/linux/ps_proc.c
- Should not be keep like this :
- - Undefined UINTPTR_MAX
- openjdk/hotspot/src/share/vm/memory/allocation.hpp
- openjdk/hotspot/src/share/vm/oops/generateOopMap.cpp
-Author: Damien Raude-Morvan <drazzib@debian.org>
-Last-Update: 2012-03-05
-Forwarded: no
---- openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c.orig
+From 7268bef341b5668169892f5ac0569d5161d25ec9 Mon Sep 17 00:00:00 2001
+Message-Id: <7268bef341b5668169892f5ac0569d5161d25ec9.1368289639.git.agx@sigxcpu.org>
+From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
+Date: Sat, 11 May 2013 18:26:43 +0200
+Subject: [PATCH] kfreebsd-support-hotspot.diff
+
+---
+ agent/src/os/linux/LinuxDebuggerLocal.c | 44 ++++++++-
+ agent/src/os/linux/libproc.h | 8 ++
+ agent/src/os/linux/ps_core.c | 38 ++++++++
+ agent/src/os/linux/ps_proc.c | 54 +++++++++++
+ make/defs.make | 7 +-
+ make/linux/Makefile | 3 +
+ make/linux/makefiles/defs.make | 2 +-
+ src/os/linux/vm/attachListener_linux.cpp | 18 +++-
+ src/os/linux/vm/jvm_linux.cpp | 2 +
+ src/os/linux/vm/os_linux.cpp | 32 +++++++
+ src/os/posix/launcher/java_md.c | 12 +--
+ src/os_cpu/linux_x86/vm/os_linux_x86.cpp | 150 ++++++++++++++++++++++++++++++
+ src/share/vm/memory/allocation.hpp | 6 +-
+ src/share/vm/oops/generateOopMap.cpp | 10 +-
+ 14 files changed, 362 insertions(+), 24 deletions(-)
+
+diff --git openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c openjdk/agent/src/os/linux/LinuxDebuggerLocal.c
+index 5771fdd..5019266 100644
+--- openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
+++ openjdk/hotspot/agent/src/os/linux/LinuxDebuggerLocal.c
-@@ -316,7 +316,7 @@
+@@ -316,7 +316,7 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
#ifdef i386
#define REG_INDEX(reg) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##reg
@@ -34,7 +34,7 @@ Forwarded: no
regs[REG_INDEX(GS)] = (uintptr_t) gregs.xgs;
regs[REG_INDEX(FS)] = (uintptr_t) gregs.xfs;
regs[REG_INDEX(ES)] = (uintptr_t) gregs.xes;
-@@ -332,7 +332,23 @@
+@@ -332,7 +332,23 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip;
regs[REG_INDEX(CS)] = (uintptr_t) gregs.xcs;
regs[REG_INDEX(SS)] = (uintptr_t) gregs.xss;
@@ -59,7 +59,7 @@ Forwarded: no
#endif /* i386 */
#if ia64
-@@ -344,7 +360,7 @@
+@@ -344,7 +360,7 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
#ifdef amd64
#define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg
@@ -68,7 +68,7 @@ Forwarded: no
regs[REG_INDEX(R15)] = gregs.r15;
regs[REG_INDEX(R14)] = gregs.r14;
regs[REG_INDEX(R13)] = gregs.r13;
-@@ -370,7 +386,27 @@
+@@ -370,7 +386,27 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLo
regs[REG_INDEX(ES)] = gregs.es;
regs[REG_INDEX(FS)] = gregs.fs;
regs[REG_INDEX(GS)] = gregs.gs;
@@ -97,7 +97,9 @@ Forwarded: no
#endif /* amd64 */
#if defined(sparc) || defined(sparcv9)
---- openjdk/hotspot/agent/src/os/linux/libproc.h.orig
+diff --git openjdk/hotspot/agent/src/os/linux/libproc.h openjdk/agent/src/os/linux/libproc.h
+index 7edaa9c..8c2511c 100644
+--- openjdk/hotspot/agent/src/os/linux/libproc.h
+++ openjdk/hotspot/agent/src/os/linux/libproc.h
@@ -27,6 +27,10 @@
@@ -110,7 +112,7 @@ Forwarded: no
#include "proc_service.h"
#if defined(sparc) || defined(sparcv9)
-@@ -112,6 +116,10 @@
+@@ -112,6 +116,10 @@ unsigned long regs[IA64_REG_COUNT]; /* integer and fp regs */
#define user_regs_struct pt_regs
#endif
@@ -121,9 +123,11 @@ Forwarded: no
// This C bool type must be int for compatibility with Linux calls and
// it would be a mistake to equivalence it to C++ bool on many platforms
---- openjdk/hotspot/agent/src/os/linux/ps_core.c.orig
+diff --git openjdk/hotspot/agent/src/os/linux/ps_core.c openjdk/agent/src/os/linux/ps_core.c
+index 9739e16..abf4da6 100644
+--- openjdk/hotspot/agent/src/os/linux/ps_core.c
+++ openjdk/hotspot/agent/src/os/linux/ps_core.c
-@@ -539,11 +539,16 @@
+@@ -539,11 +539,16 @@ static bool core_handle_prstatus(struct ps_prochandle* ph, const char* buf, size
return false;
// copy regs
@@ -140,7 +144,7 @@ Forwarded: no
// print the regset
print_debug("\teax = 0x%x\n", newthr->regs.eax);
print_debug("\tebx = 0x%x\n", newthr->regs.ebx);
-@@ -554,9 +559,21 @@
+@@ -554,9 +559,21 @@ static bool core_handle_prstatus(struct ps_prochandle* ph, const char* buf, size
print_debug("\tesi = 0x%x\n", newthr->regs.esi);
print_debug("\tedi = 0x%x\n", newthr->regs.edi);
print_debug("\teip = 0x%x\n", newthr->regs.eip);
@@ -162,7 +166,7 @@ Forwarded: no
// print the regset
print_debug("\tr15 = 0x%lx\n", newthr->regs.r15);
print_debug("\tr14 = 0x%lx\n", newthr->regs.r14);
-@@ -585,6 +602,27 @@
+@@ -585,6 +602,27 @@ static bool core_handle_prstatus(struct ps_prochandle* ph, const char* buf, size
print_debug("\tes = 0x%lx\n", newthr->regs.es);
print_debug("\tfs = 0x%lx\n", newthr->regs.fs);
print_debug("\tgs = 0x%lx\n", newthr->regs.gs);
@@ -190,7 +194,9 @@ Forwarded: no
#endif
}
---- openjdk/hotspot/agent/src/os/linux/ps_proc.c.orig
+diff --git openjdk/hotspot/agent/src/os/linux/ps_proc.c openjdk/agent/src/os/linux/ps_proc.c
+index 676e88a..e3c678a 100644
+--- openjdk/hotspot/agent/src/os/linux/ps_proc.c
+++ openjdk/hotspot/agent/src/os/linux/ps_proc.c
@@ -37,6 +37,18 @@
#define __WALL 0x40000000 // Copied from /usr/include/linux/wait.h
@@ -211,7 +217,7 @@ Forwarded: no
// This file has the libproc implementation specific to live process
// For core files, refer to ps_core.c
-@@ -54,7 +66,11 @@
+@@ -54,7 +66,11 @@ static inline uintptr_t align(uintptr_t ptr, size_t size) {
// before calling process_read_data.
static bool process_read_data(struct ps_prochandle* ph, uintptr_t addr, char *buf, size_t size) {
@@ -223,7 +229,7 @@ Forwarded: no
size_t i, words;
uintptr_t end_addr = addr + size;
uintptr_t aligned_addr = align(addr, sizeof(long));
-@@ -62,36 +78,62 @@
+@@ -62,36 +78,62 @@ static bool process_read_data(struct ps_prochandle* ph, uintptr_t addr, char *bu
if (aligned_addr != addr) {
char *ptr = (char *)&rslt;
errno = 0;
@@ -286,7 +292,7 @@ Forwarded: no
if (errno) {
print_debug("ptrace(PTRACE_PEEKDATA, ..) failed for %d bytes @ %lx\n", size, addr);
return false;
-@@ -130,7 +172,11 @@
+@@ -130,7 +172,11 @@ static bool process_get_lwp_regs(struct ps_prochandle* ph, pid_t pid, struct use
#endif
#ifdef PTRACE_GETREGS_REQ
@@ -298,7 +304,7 @@ Forwarded: no
print_debug("ptrace(PTRACE_GETREGS, ...) failed for lwp %d\n", pid);
return false;
}
-@@ -144,7 +190,11 @@
+@@ -144,7 +190,11 @@ static bool process_get_lwp_regs(struct ps_prochandle* ph, pid_t pid, struct use
// attach to a process/thread specified by "pid"
static bool ptrace_attach(pid_t pid) {
@@ -310,7 +316,7 @@ Forwarded: no
print_debug("ptrace(PTRACE_ATTACH, ..) failed for %d\n", pid);
return false;
} else {
-@@ -271,7 +321,11 @@
+@@ -271,7 +321,11 @@ static bool read_lib_info(struct ps_prochandle* ph) {
// detach a given pid
static bool ptrace_detach(pid_t pid) {
@@ -322,9 +328,21 @@ Forwarded: no
print_debug("ptrace(PTRACE_DETACH, ..) failed for %d\n", pid);
return false;
} else {
---- openjdk/hotspot/make/defs.make.orig
+diff --git openjdk/hotspot/make/defs.make openjdk/make/defs.make
+index a0aa0e5..efd8995 100644
+--- openjdk/hotspot/make/defs.make
+++ openjdk/hotspot/make/defs.make
-@@ -132,6 +132,10 @@
+@@ -118,9 +118,6 @@ endif
+ # Windows should have OS predefined
+ ifeq ($(OS),)
+ OS := $(shell uname -s)
+- ifneq ($(findstring BSD,$(OS)),)
+- OS=bsd
+- endif
+ ifeq ($(OS), Darwin)
+ OS=bsd
+ endif
+@@ -142,6 +139,10 @@ else
OSNAME=linux
endif
@@ -335,9 +353,11 @@ Forwarded: no
# Determinations of default make arguments and platform specific settings
MAKE_ARGS=
---- openjdk/hotspot/make/linux/Makefile.orig
+diff --git openjdk/hotspot/make/linux/Makefile openjdk/make/linux/Makefile
+index 0ae3f4c..572c3e9 100644
+--- openjdk/hotspot/make/linux/Makefile
+++ openjdk/hotspot/make/linux/Makefile
-@@ -234,6 +234,9 @@
+@@ -234,6 +234,9 @@ checks: check_os_version check_j2se_version
SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3%
OS_VERSION := $(shell uname -r)
EMPTY_IF_NOT_SUPPORTED = $(filter $(SUPPORTED_OS_VERSION),$(OS_VERSION))
@@ -347,9 +367,11 @@ Forwarded: no
check_os_version:
ifeq ($(DISABLE_HOTSPOT_OS_VERSION_CHECK)$(EMPTY_IF_NOT_SUPPORTED),)
---- openjdk/hotspot/make/linux/makefiles/defs.make.orig
+diff --git openjdk/hotspot/make/linux/makefiles/defs.make openjdk/make/linux/makefiles/defs.make
+index 70f502f..8bd7c4e 100644
+--- openjdk/hotspot/make/linux/makefiles/defs.make
+++ openjdk/hotspot/make/linux/makefiles/defs.make
-@@ -91,7 +91,7 @@
+@@ -91,7 +91,7 @@ ifeq ($(ARCH), x86_64)
endif
# i686
@@ -358,7 +380,9 @@ Forwarded: no
ARCH_DATA_MODEL = 32
PLATFORM = linux-i586
VM_PLATFORM = linux_i486
---- openjdk/hotspot/src/os/linux/vm/attachListener_linux.cpp.orig
+diff --git openjdk/hotspot/src/os/linux/vm/attachListener_linux.cpp openjdk/src/os/linux/vm/attachListener_linux.cpp
+index 5b9c729..e88faa3 100644
+--- openjdk/hotspot/src/os/linux/vm/attachListener_linux.cpp
+++ openjdk/hotspot/src/os/linux/vm/attachListener_linux.cpp
@@ -39,6 +39,10 @@
#define UNIX_PATH_MAX sizeof(((struct sockaddr_un *)0)->sun_path)
@@ -371,7 +395,7 @@ Forwarded: no
// The attach mechanism on Linux uses a UNIX domain socket. An attach listener
// thread is created at startup or is created on-demand via a signal from
// the client tool. The attach listener creates a socket and binds it to a file
-@@ -337,9 +341,15 @@
+@@ -337,9 +341,15 @@ LinuxAttachOperation* LinuxAttachListener::dequeue() {
// get the credentials of the peer and check the effective uid/guid
// - check with jeff on this.
@@ -387,7 +411,7 @@ Forwarded: no
int res;
RESTARTABLE(::close(s), res);
continue;
-@@ -347,10 +357,14 @@
+@@ -347,10 +357,14 @@ LinuxAttachOperation* LinuxAttachListener::dequeue() {
uid_t euid = geteuid();
gid_t egid = getegid();
@@ -404,9 +428,11 @@ Forwarded: no
}
// peer credential look okay so we read the request
---- openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp.orig
+diff --git openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp openjdk/src/os/linux/vm/jvm_linux.cpp
+index ba84788..8c4937a 100644
+--- openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp
+++ openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp
-@@ -169,7 +169,9 @@
+@@ -169,7 +169,9 @@ struct siglabel siglabels[] = {
"WINCH", SIGWINCH, /* Window size change (4.3 BSD, Sun). */
"POLL", SIGPOLL, /* Pollable event occurred (System V). */
"IO", SIGIO, /* I/O now possible (4.2 BSD). */
@@ -416,9 +442,11 @@ Forwarded: no
#ifdef SIGSYS
"SYS", SIGSYS /* Bad system call. Only on some Linuxen! */
#endif
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig
+diff --git openjdk/hotspot/src/os/linux/vm/os_linux.cpp openjdk/src/os/linux/vm/os_linux.cpp
+index 55f52c3..a82f627 100644
+--- openjdk/hotspot/src/os/linux/vm/os_linux.cpp
+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
-@@ -115,8 +115,13 @@
+@@ -113,8 +113,13 @@
# include <semaphore.h>
# include <fcntl.h>
# include <string.h>
@@ -432,7 +460,7 @@ Forwarded: no
# include <gnu/libc-version.h>
# include <sys/ipc.h>
# include <sys/shm.h>
-@@ -127,6 +132,10 @@
+@@ -125,6 +130,10 @@
#define MAX_PATH (2 * K)
@@ -442,8 +470,8 @@ Forwarded: no
+
// for timer info max values which include all bits
#define ALL_64_BITS CONST64(0xFFFFFFFFFFFFFFFF)
- #define SEC_IN_NANOSECS 1000000000LL
-@@ -208,11 +217,22 @@
+
+@@ -205,11 +214,22 @@ julong os::available_memory() {
}
julong os::Linux::available_memory() {
@@ -466,7 +494,7 @@ Forwarded: no
}
julong os::physical_memory() {
-@@ -2161,18 +2181,22 @@
+@@ -2128,18 +2148,22 @@ void os::print_memory_info(outputStream* st) {
st->print("Memory:");
st->print(" %dk page", os::vm_page_size()>>10);
@@ -489,7 +517,7 @@ Forwarded: no
st->cr();
}
-@@ -5389,6 +5413,7 @@
+@@ -5372,6 +5396,7 @@ extern char** environ;
int os::fork_and_exec(char* cmd) {
const char * argv[4] = {"sh", "-c", cmd, NULL};
@@ -497,7 +525,7 @@ Forwarded: no
// fork() in LinuxThreads/NPTL is not async-safe. It needs to run
// pthread_atfork handlers and reset pthread library. All we need is a
// separate process to execve. Make a direct syscall to fork process.
-@@ -5396,6 +5421,9 @@
+@@ -5379,6 +5404,9 @@ int os::fork_and_exec(char* cmd) {
// the best...
pid_t pid = NOT_IA64(syscall(__NR_fork);)
IA64_ONLY(fork();)
@@ -507,7 +535,7 @@ Forwarded: no
if (pid < 0) {
// fork failed
-@@ -5404,6 +5432,7 @@
+@@ -5387,6 +5415,7 @@ int os::fork_and_exec(char* cmd) {
} else if (pid == 0) {
// child process
@@ -515,7 +543,7 @@ Forwarded: no
// execve() in LinuxThreads will call pthread_kill_other_threads_np()
// first to kill every thread on the thread list. Because this list is
// not reset by fork() (see notes above), execve() will instead kill
-@@ -5413,6 +5442,9 @@
+@@ -5396,6 +5425,9 @@ int os::fork_and_exec(char* cmd) {
// above.
NOT_IA64(syscall(__NR_execve, "/bin/sh", argv, environ);)
IA64_ONLY(execve("/bin/sh", (char* const*)argv, environ);)
@@ -525,18 +553,20 @@ Forwarded: no
// execve failed
_exit(-1);
---- openjdk/hotspot/src/os/posix/launcher/java_md.c.orig
+diff --git openjdk/hotspot/src/os/posix/launcher/java_md.c openjdk/src/os/posix/launcher/java_md.c
+index 8b1542e..69e0832 100644
+--- openjdk/hotspot/src/os/posix/launcher/java_md.c
+++ openjdk/hotspot/src/os/posix/launcher/java_md.c
@@ -41,7 +41,7 @@
#include "version_comp.h"
#endif
--#ifdef __linux__
-+#if defined(__linux__) || defined(__GLIBC__)
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
#include <pthread.h>
#else
#include <thread.h>
-@@ -89,7 +89,7 @@
+@@ -96,7 +96,7 @@ extern char **environ;
* A collection of useful strings. One should think of these as #define
* entries, but actual strings can be more efficient (with many compilers).
*/
@@ -545,25 +575,25 @@ Forwarded: no
static const char *system_dir = "/usr/java";
static const char *user_dir = "/java";
#else /* Solaris */
-@@ -426,7 +426,7 @@
- runpath = getenv("LD_LIBRARY_PATH");
+@@ -433,7 +433,7 @@ CreateExecutionEnvironment(int *_argcp,
+ runpath = getenv(LD_LIBRARY_PATH);
#endif /* __sun */
--#ifdef __linux
+-#if defined(__linux__)
+#if defined(__linux__) || defined(__GLIBC__)
/*
* On linux, if a binary is running as sgid or suid, glibc sets
* LD_LIBRARY_PATH to the empty string for security purposes. (In
-@@ -792,7 +792,7 @@
+@@ -823,7 +823,7 @@ error:
jboolean
GetApplicationHome(char *buf, jint bufsize)
{
--#ifdef __linux__
-+#if defined(__linux__) || defined(__GLIBC__)
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
char *execname = GetExecname();
if (execname) {
strncpy(buf, execname, bufsize-1);
-@@ -961,7 +961,7 @@
+@@ -992,7 +992,7 @@ SetExecname(char **argv)
}
}
}
@@ -572,16 +602,18 @@ Forwarded: no
{
const char* self = "/proc/self/exe";
char buf[PATH_MAX+1];
-@@ -1821,7 +1821,7 @@
+@@ -1887,7 +1887,7 @@ jlong_format_specifier() {
int
ContinueInNewThread(int (JNICALL *continuation)(void *), jlong stack_size, void * args) {
int rslt;
--#ifdef __linux__
-+#if defined(__linux__) || defined(__GLIBC__)
+-#if defined(__linux__) || defined(_ALLBSD_SOURCE)
++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__GLIBC__)
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
---- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp.orig
+diff --git openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+index ba484b9..d1e7b6f 100644
+--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
@@ -81,6 +81,7 @@
# include <ucontext.h>
@@ -646,7 +678,7 @@ Forwarded: no
address os::current_stack_pointer() {
#ifdef SPARC_WORKS
-@@ -119,15 +168,27 @@
+@@ -119,15 +168,27 @@ void os::initialize_thread() {
}
address os::Linux::ucontext_get_pc(ucontext_t * uc) {
@@ -674,7 +706,7 @@ Forwarded: no
}
// For Forte Analyzer AsyncGetCallTrace profiling support - thread
-@@ -279,12 +340,20 @@
+@@ -279,12 +340,20 @@ JVM_handle_linux_signal(int sig,
pc = (address) os::Linux::ucontext_get_pc(uc);
if (pc == (address) Fetch32PFI) {
@@ -695,7 +727,7 @@ Forwarded: no
return 1 ;
}
#endif // AMD64
-@@ -430,7 +499,11 @@
+@@ -430,7 +499,11 @@ JVM_handle_linux_signal(int sig,
// Furthermore, a false-positive should be harmless.
if (UnguardOnExecutionViolation > 0 &&
(sig == SIGSEGV || sig == SIGBUS) &&
@@ -707,7 +739,7 @@ Forwarded: no
int page_size = os::vm_page_size();
address addr = (address) info->si_addr;
address pc = os::Linux::ucontext_get_pc(uc);
-@@ -500,7 +573,11 @@
+@@ -500,7 +573,11 @@ JVM_handle_linux_signal(int sig,
// save all thread context in case we need to restore it
if (thread != NULL) thread->set_saved_exception_pc(pc);
@@ -719,7 +751,7 @@ Forwarded: no
return true;
}
-@@ -752,6 +829,7 @@
+@@ -752,6 +829,7 @@ void os::print_context(outputStream *st, void *context) {
ucontext_t *uc = (ucontext_t*)context;
st->print_cr("Registers:");
@@ -727,7 +759,7 @@ Forwarded: no
#ifdef AMD64
st->print( "RAX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RAX]);
st->print(", RBX=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_RBX]);
-@@ -794,6 +872,48 @@
+@@ -794,6 +872,48 @@ void os::print_context(outputStream *st, void *context) {
st->print(", EFLAGS=" INTPTR_FORMAT, uc->uc_mcontext.gregs[REG_EFL]);
st->print(", CR2=" INTPTR_FORMAT, uc->uc_mcontext.cr2);
#endif // AMD64
@@ -776,7 +808,7 @@ Forwarded: no
st->cr();
st->cr();
-@@ -824,6 +944,7 @@
+@@ -824,6 +944,7 @@ void os::print_register_info(outputStream *st, void *context) {
// this is only for the "general purpose" registers
@@ -784,7 +816,7 @@ Forwarded: no
#ifdef AMD64
st->print("RAX="); print_location(st, uc->uc_mcontext.gregs[REG_RAX]);
st->print("RBX="); print_location(st, uc->uc_mcontext.gregs[REG_RBX]);
-@@ -851,6 +972,35 @@
+@@ -851,6 +972,35 @@ void os::print_register_info(outputStream *st, void *context) {
st->print("ESI="); print_location(st, uc->uc_mcontext.gregs[REG_ESI]);
st->print("EDI="); print_location(st, uc->uc_mcontext.gregs[REG_EDI]);
#endif // AMD64
@@ -820,9 +852,11 @@ Forwarded: no
st->cr();
}
---- openjdk/hotspot/src/share/vm/memory/allocation.hpp.orig
+diff --git openjdk/hotspot/src/share/vm/memory/allocation.hpp openjdk/src/share/vm/memory/allocation.hpp
+index 4c2f1e8..d2cbfe1 100644
+--- openjdk/hotspot/src/share/vm/memory/allocation.hpp
+++ openjdk/hotspot/src/share/vm/memory/allocation.hpp
-@@ -218,9 +218,9 @@
+@@ -218,9 +218,9 @@ protected:
void signal_out_of_memory(size_t request, const char* whence) const;
void check_for_overflow(size_t request, const char* whence) const {
@@ -835,9 +869,11 @@ Forwarded: no
}
public:
---- openjdk/hotspot/src/share/vm/oops/generateOopMap.cpp.orig
+diff --git openjdk/hotspot/src/share/vm/oops/generateOopMap.cpp openjdk/src/share/vm/oops/generateOopMap.cpp
+index 58ef931..9448389 100644
+--- openjdk/hotspot/src/share/vm/oops/generateOopMap.cpp
+++ openjdk/hotspot/src/share/vm/oops/generateOopMap.cpp
-@@ -970,11 +970,11 @@
+@@ -970,11 +970,11 @@ void GenerateOopMap::init_basic_blocks() {
// The product of bbNo and _state_len can get large if there are lots of
// basic blocks and stack/locals/monitors. Need to check to make sure
// we don't overflow the capacity of a pointer.
@@ -854,3 +890,6 @@ Forwarded: no
CellTypeState *basicBlockState =
NEW_RESOURCE_ARRAY(CellTypeState, bbNo * _state_len);
+--
+1.7.10.4
+