8077674: BSD build failures due to undefined macros
Reviewed-by: dsamersoff, kbarrett, hseigel
This commit is contained in:
parent
a22fc004de
commit
650fe66a1b
@ -1185,12 +1185,18 @@ pid_t os::Bsd::gettid() {
|
||||
guarantee(retval != 0, "just checking");
|
||||
return retval;
|
||||
|
||||
#elif __FreeBSD__
|
||||
#else
|
||||
#ifdef __FreeBSD__
|
||||
retval = syscall(SYS_thr_self);
|
||||
#elif __OpenBSD__
|
||||
#else
|
||||
#ifdef __OpenBSD__
|
||||
retval = syscall(SYS_getthrid);
|
||||
#elif __NetBSD__
|
||||
#else
|
||||
#ifdef __NetBSD__
|
||||
retval = (pid_t) syscall(SYS__lwp_self);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (retval == -1) {
|
||||
|
@ -198,14 +198,20 @@ bool os::have_special_privileges() {
|
||||
// i386: 224, ia64: 1105, amd64: 186, sparc 143
|
||||
#ifdef __ia64__
|
||||
#define SYS_gettid 1105
|
||||
#elif __i386__
|
||||
#define SYS_gettid 224
|
||||
#elif __amd64__
|
||||
#define SYS_gettid 186
|
||||
#elif __sparc__
|
||||
#define SYS_gettid 143
|
||||
#else
|
||||
#error define gettid for the arch
|
||||
#ifdef __i386__
|
||||
#define SYS_gettid 224
|
||||
#else
|
||||
#ifdef __amd64__
|
||||
#define SYS_gettid 186
|
||||
#else
|
||||
#ifdef __sparc__
|
||||
#define SYS_gettid 143
|
||||
#else
|
||||
#error define gettid for the arch
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -114,10 +114,12 @@ static FILETIME process_kernel_time;
|
||||
|
||||
#ifdef _M_IA64
|
||||
#define __CPU__ ia64
|
||||
#elif _M_AMD64
|
||||
#define __CPU__ amd64
|
||||
#else
|
||||
#define __CPU__ i486
|
||||
#ifdef _M_AMD64
|
||||
#define __CPU__ amd64
|
||||
#else
|
||||
#define __CPU__ i486
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// save DLL module handle, used by GetModuleFileName
|
||||
@ -2090,20 +2092,22 @@ LONG Handle_Exception(struct _EXCEPTION_POINTERS* exceptionInfo,
|
||||
// at the beginning of the target bundle.
|
||||
exceptionInfo->ContextRecord->StIPSR &= 0xFFFFF9FFFFFFFFFF;
|
||||
assert(((DWORD64)handler & 0xF) == 0, "Target address must point to the beginning of a bundle!");
|
||||
#elif _M_AMD64
|
||||
#else
|
||||
#ifdef _M_AMD64
|
||||
// Do not blow up if no thread info available.
|
||||
if (thread) {
|
||||
thread->set_saved_exception_pc((address)(DWORD_PTR)exceptionInfo->ContextRecord->Rip);
|
||||
}
|
||||
// Set pc to handler
|
||||
exceptionInfo->ContextRecord->Rip = (DWORD64)handler;
|
||||
#else
|
||||
#else
|
||||
// Do not blow up if no thread info available.
|
||||
if (thread) {
|
||||
thread->set_saved_exception_pc((address)(DWORD_PTR)exceptionInfo->ContextRecord->Eip);
|
||||
}
|
||||
// Set pc to handler
|
||||
exceptionInfo->ContextRecord->Eip = (DWORD)(DWORD_PTR)handler;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Continue the execution
|
||||
@ -2202,7 +2206,8 @@ LONG Handle_IDiv_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) {
|
||||
// (division by zero is handled explicitly)
|
||||
#ifdef _M_IA64
|
||||
assert(0, "Fix Handle_IDiv_Exception");
|
||||
#elif _M_AMD64
|
||||
#else
|
||||
#ifdef _M_AMD64
|
||||
PCONTEXT ctx = exceptionInfo->ContextRecord;
|
||||
address pc = (address)ctx->Rip;
|
||||
assert(pc[0] == 0xF7, "not an idiv opcode");
|
||||
@ -2213,7 +2218,7 @@ LONG Handle_IDiv_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) {
|
||||
ctx->Rax = (DWORD)min_jint; // result
|
||||
ctx->Rdx = (DWORD)0; // remainder
|
||||
// Continue the execution
|
||||
#else
|
||||
#else
|
||||
PCONTEXT ctx = exceptionInfo->ContextRecord;
|
||||
address pc = (address)ctx->Eip;
|
||||
assert(pc[0] == 0xF7, "not an idiv opcode");
|
||||
@ -2224,6 +2229,7 @@ LONG Handle_IDiv_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) {
|
||||
ctx->Eax = (DWORD)min_jint; // result
|
||||
ctx->Edx = (DWORD)0; // remainder
|
||||
// Continue the execution
|
||||
#endif
|
||||
#endif
|
||||
return EXCEPTION_CONTINUE_EXECUTION;
|
||||
}
|
||||
@ -2296,10 +2302,12 @@ LONG WINAPI topLevelExceptionFilter(struct _EXCEPTION_POINTERS* exceptionInfo) {
|
||||
// This is needed for IA64 because "relocation" / "implicit null check" / "poll instruction"
|
||||
// information is saved in the Unix format.
|
||||
address pc_unix_format = (address) ((((uint64_t)pc) & 0xFFFFFFFFFFFFFFF0) | ((((uint64_t)pc) & 0xF) >> 2));
|
||||
#elif _M_AMD64
|
||||
address pc = (address) exceptionInfo->ContextRecord->Rip;
|
||||
#else
|
||||
#ifdef _M_AMD64
|
||||
address pc = (address) exceptionInfo->ContextRecord->Rip;
|
||||
#else
|
||||
address pc = (address) exceptionInfo->ContextRecord->Eip;
|
||||
#endif
|
||||
#endif
|
||||
Thread* t = ThreadLocalStorage::get_thread_slow(); // slow & steady
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user