NAME=jni types auto-load arm64 FILE=bins/elf/jni/jniO0-arm64 CMDS=< offset='JNINativeInterface.CallIntMethod' 0x000019b8 => offset='JNINativeInterface.CallIntMethodV' 0x00001a24 => offset='JNINativeInterface.CallIntMethodA' | 0x00001908 08c540f9 ldr x8, [x8, JNINativeInterface.CallIntMethod] | 0x0000191c 00013fd6 blr x8 ; jint JNINativeInterface.CallIntMethod(JNIEnv *env, jobject object, jmethodID methodID, ...) JNINativeInterface.GetDirectBufferAddress (x0, x1) // void *JNINativeInterface.GetDirectBufferAddress(0, 0) JNINativeInterface.GetDirectBufferAddress (x0, x1) // void *JNINativeInterface.GetDirectBufferAddress(0, 0) JNINativeInterface.GetDirectBufferAddress (x0, x1) // void *JNINativeInterface.GetDirectBufferAddress(0, 0) void *JNINativeInterface.GetDirectBufferAddress(?, ?) EOF RUN NAME=jni slot calls follow optimized register copies FILE=bins/elf/jni/jniO2-arm64 CMDS=< offset='JNINativeInterface.NewStringUTF' 0x000005cc => offset='JNINativeInterface.GetVersion' JNINativeInterface.NewStringUTF (x0, x1) // jstring JNINativeInterface.NewStringUTF(0, "test") JNINativeInterface.GetVersion (x0) // jint JNINativeInterface.GetVersion(0) EOF RUN NAME=jni typed table layout keeps arm64 offsets and sizes FILE=bins/elf/jni/jniO0-arm64 CMDS=< offset='JNIInvokeInterface.GetEnv' 0x00000270 => offset='JNINativeInterface.FindClass' 0x00000294 => offset='JNINativeInterface.RegisterNatives' JNINativeInterface.FindClass (x0, x1) // jclass JNINativeInterface.FindClass(0xffffffff, "BD.\x91\xeb") JNINativeInterface.RegisterNatives (x0, x1, x2, x3) // jint JNINativeInterface.RegisterNatives(0, 0xffffffff, 0xd008, 0x5d) jclass JNINativeInterface.FindClass(0x0, "androidx/renderscript/RenderScript") jint JNINativeInterface.RegisterNatives(0x0, 0x0, 0xd008, 0x5d) EOF RUN NAME=jni auto-apply types for Java_ functions arm64 FILE=bins/elf/jni/jniO0-arm64 CMDS=<