src/jdk.hotspot.agent/linux/native/libsaproc/LinuxDebuggerLocal.c
changeset 55069 6e0786d8451b
parent 53379 e47074d2d8cc
equal deleted inserted replaced
55068:f6260463dbe4 55069:6e0786d8451b
    36 
    36 
    37 #if defined(x86_64) && !defined(amd64)
    37 #if defined(x86_64) && !defined(amd64)
    38 #define amd64 1
    38 #define amd64 1
    39 #endif
    39 #endif
    40 
    40 
    41 #ifdef i386
    41 #if defined(i386) && !defined(i586)
       
    42 #define i586 1
       
    43 #endif
       
    44 
       
    45 #ifdef i586
    42 #include "sun_jvm_hotspot_debugger_x86_X86ThreadContext.h"
    46 #include "sun_jvm_hotspot_debugger_x86_X86ThreadContext.h"
    43 #endif
    47 #endif
    44 
    48 
    45 #ifdef amd64
    49 #ifdef amd64
    46 #include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h"
    50 #include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h"
   384   err = ps_pdread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes);
   388   err = ps_pdread(get_proc_handle(env, this_obj), (psaddr_t) (uintptr_t)addr, bufPtr, numBytes);
   385   (*env)->ReleaseByteArrayElements(env, array, bufPtr, 0);
   389   (*env)->ReleaseByteArrayElements(env, array, bufPtr, 0);
   386   return (err == PS_OK)? array : 0;
   390   return (err == PS_OK)? array : 0;
   387 }
   391 }
   388 
   392 
   389 #if defined(i386) || defined(amd64) || defined(sparc) || defined(sparcv9) | defined(ppc64) || defined(ppc64le) || defined(aarch64)
   393 #if defined(i586) || defined(amd64) || defined(sparc) || defined(sparcv9) | defined(ppc64) || defined(ppc64le) || defined(aarch64)
   390 JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0
   394 JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_linux_LinuxDebuggerLocal_getThreadIntegerRegisterSet0
   391   (JNIEnv *env, jobject this_obj, jint lwp_id) {
   395   (JNIEnv *env, jobject this_obj, jint lwp_id) {
   392 
   396 
   393   struct user_regs_struct gregs;
   397   struct user_regs_struct gregs;
   394   jboolean isCopy;
   398   jboolean isCopy;
   400   if (get_lwp_regs(ph, lwp_id, &gregs) != true) {
   404   if (get_lwp_regs(ph, lwp_id, &gregs) != true) {
   401      THROW_NEW_DEBUGGER_EXCEPTION_("get_thread_regs failed for a lwp", 0);
   405      THROW_NEW_DEBUGGER_EXCEPTION_("get_thread_regs failed for a lwp", 0);
   402   }
   406   }
   403 
   407 
   404 #undef NPRGREG
   408 #undef NPRGREG
   405 #ifdef i386
   409 #ifdef i586
   406 #define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG
   410 #define NPRGREG sun_jvm_hotspot_debugger_x86_X86ThreadContext_NPRGREG
   407 #endif
   411 #endif
   408 #ifdef amd64
   412 #ifdef amd64
   409 #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG
   413 #define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG
   410 #endif
   414 #endif
   423   CHECK_EXCEPTION_(0);
   427   CHECK_EXCEPTION_(0);
   424   regs = (*env)->GetLongArrayElements(env, array, &isCopy);
   428   regs = (*env)->GetLongArrayElements(env, array, &isCopy);
   425 
   429 
   426 #undef REG_INDEX
   430 #undef REG_INDEX
   427 
   431 
   428 #ifdef i386
   432 #ifdef i586
   429 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##reg
   433 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_x86_X86ThreadContext_##reg
   430 
   434 
   431   regs[REG_INDEX(GS)]  = (uintptr_t) gregs.xgs;
   435   regs[REG_INDEX(GS)]  = (uintptr_t) gregs.xgs;
   432   regs[REG_INDEX(FS)]  = (uintptr_t) gregs.xfs;
   436   regs[REG_INDEX(FS)]  = (uintptr_t) gregs.xfs;
   433   regs[REG_INDEX(ES)]  = (uintptr_t) gregs.xes;
   437   regs[REG_INDEX(ES)]  = (uintptr_t) gregs.xes;
   442   regs[REG_INDEX(EAX)] = (uintptr_t) gregs.eax;
   446   regs[REG_INDEX(EAX)] = (uintptr_t) gregs.eax;
   443   regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip;
   447   regs[REG_INDEX(PC)] = (uintptr_t) gregs.eip;
   444   regs[REG_INDEX(CS)]  = (uintptr_t) gregs.xcs;
   448   regs[REG_INDEX(CS)]  = (uintptr_t) gregs.xcs;
   445   regs[REG_INDEX(SS)]  = (uintptr_t) gregs.xss;
   449   regs[REG_INDEX(SS)]  = (uintptr_t) gregs.xss;
   446 
   450 
   447 #endif /* i386 */
   451 #endif /* i586 */
   448 
   452 
   449 #ifdef amd64
   453 #ifdef amd64
   450 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg
   454 #define REG_INDEX(reg) sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_##reg
   451 
   455 
   452   regs[REG_INDEX(R15)] = gregs.r15;
   456   regs[REG_INDEX(R15)] = gregs.r15;