agent/src/os/linux/LinuxDebuggerLocal.c

Print this page
rev 9708 : 8073139: PPC64: User-visible arch directory and os.arch value on ppc64le cause issues with Java tooling
Summary: Set LIBARCH to ppc64le, make SA and hsdis work, have os.arch return ppc64le on PowerPC64 LE
Reviewed-by: david.holmes@oracle.com, magnus.ihse.bursie@oracle.com
Contributed-by: Andrew Hughes gnu.andrew@redhat.com, Alexander Smundak asmundak@google.com

*** 47,57 **** #if defined(sparc) || defined(sparcv9) #include "sun_jvm_hotspot_debugger_sparc_SPARCThreadContext.h" #endif ! #ifdef ppc64 #include "sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext.h" #endif #ifdef aarch64 #include "sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext.h" --- 47,57 ---- #if defined(sparc) || defined(sparcv9) #include "sun_jvm_hotspot_debugger_sparc_SPARCThreadContext.h" #endif ! #if defined(ppc64) || defined(ppc64le) #include "sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext.h" #endif #ifdef aarch64 #include "sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext.h"
*** 350,360 **** err = ps_pdread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes); (*env)->ReleaseByteArrayElements(env, array, bufPtr, 0); return (err == PS_OK)? array : 0; } ! #if defined(i386) || defined(amd64) || defined(sparc) || defined(sparcv9) | defined(ppc64) || defined(aarch64) JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0 (JNIEnv *env, jobject this_obj, jint lwp_id) { struct user_regs_struct gregs; jboolean isCopy; --- 350,360 ---- err = ps_pdread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes); (*env)->ReleaseByteArrayElements(env, array, bufPtr, 0); return (err == PS_OK)? array : 0; } ! #if defined(i386) || defined(amd64) || defined(sparc) || defined(sparcv9) | defined(ppc64) || defined(ppc64le) || defined(aarch64) JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0 (JNIEnv *env, jobject this_obj, jint lwp_id) { struct user_regs_struct gregs; jboolean isCopy;
*** 378,388 **** #define NPRGREG sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext_NPRGREG #endif #if defined(sparc) || defined(sparcv9) #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG #endif ! #ifdef ppc64 #define NPRGREG sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext_NPRGREG #endif array = (*env)->NewLongArray(env, NPRGREG); --- 378,388 ---- #define NPRGREG sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext_NPRGREG #endif #if defined(sparc) || defined(sparcv9) #define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG #endif ! #if defined(ppc64) || defined(ppc64le) #define NPRGREG sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext_NPRGREG #endif array = (*env)->NewLongArray(env, NPRGREG);
*** 487,497 **** regs[REG_INDEX(SP)] = gregs.sp; regs[REG_INDEX(PC)] = gregs.pc; } #endif /* aarch64 */ ! #ifdef ppc64 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext_##reg regs[REG_INDEX(LR)] = gregs.link; regs[REG_INDEX(NIP)] = gregs.nip; regs[REG_INDEX(R0)] = gregs.gpr[0]; --- 487,497 ---- regs[REG_INDEX(SP)] = gregs.sp; regs[REG_INDEX(PC)] = gregs.pc; } #endif /* aarch64 */ ! #if defined(ppc64) || defined(ppc64le) #define REG_INDEX(reg) sun_jvm_hotspot_debugger_ppc64_PPC64ThreadContext_##reg regs[REG_INDEX(LR)] = gregs.link; regs[REG_INDEX(NIP)] = gregs.nip; regs[REG_INDEX(R0)] = gregs.gpr[0];