NAME=jni types auto-load arm64
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
e asm.os=android
tk jboolean
tk jstring
tk JNIEnv
tk JNINativeInterface
tk JavaVM
tk JNIInvokeInterface
EOF
EXPECT=<<EOF
typedef
typedef
typedef
struct
typedef
struct
EOF
RUN

NAME=jni types not loaded without android
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
tk jboolean
tk JNINativeInterface
EOF
EXPECT=<<EOF
EOF
RUN

NAME=jni jobjectRefType enum
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
e asm.os=android
te jobjectRefType
EOF
EXPECT=<<EOF
JNIInvalidRefType = 0x0
JNILocalRefType = 0x1
JNIGlobalRefType = 0x2
JNIWeakGlobalRefType = 0x3
EOF
RUN

NAME=jni jvalue union
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
e asm.os=android
tk jvalue
tk union.jvalue
EOF
EXPECT=<<EOF
union
z,b,c,s,i,j,f,d,l
EOF
RUN

NAME=jni JNINativeInterface has NewStringUTF
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
e asm.os=android
ts JNINativeInterface~NewStringUTF?
ts JNINativeInterface~GetVersion?
ts JNINativeInterface~FindClass?
ts JNINativeInterface~GetMethodID?
EOF
EXPECT=<<EOF
1
1
1
1
EOF
RUN

NAME=jni JNINativeInterface field offsets
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
e asm.os=android
tk struct.JNINativeInterface.GetVersion
tk struct.JNINativeInterface.FindClass
tk struct.JNINativeInterface.NewStringUTF
tk struct.JNINativeInterface.GetObjectRefType
EOF
EXPECT=<<EOF
void *,32,0
void *,48,0
void *,1336,0
void *,1856,0
EOF
RUN

NAME=jni JNIInvokeInterface field offsets
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
e asm.os=android
tk struct.JNIInvokeInterface.DestroyJavaVM
tk struct.JNIInvokeInterface.GetEnv
EOF
EXPECT=<<EOF
void *,24,0
void *,48,0
EOF
RUN

NAME=jni auto-apply types for Java_ functions arm64
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
e asm.os=android
aaa
s sym.Java_JNIFoo_apiTest
pdf~apiTest
EOF
EXPECT=<<EOF
/ 80: void *sym.Java_JNIFoo_apiTest (JNIEnv *env, jobject thiz);
EOF
RUN

NAME=jni auto-apply types for Java_ functions x86
FILE=bins/elf/jni/jniO0-x86
CMDS=<<EOF
e asm.os=android
aaa
s sym.Java_JNIFoo_apiTest
pdf~apiTest
EOF
EXPECT=<<EOF
/ 77: void *sym.Java_JNIFoo_apiTest (JNIEnv *env, jobject thiz);
EOF
RUN

NAME=jni types mips
FILE=bins/elf/jni/jniO0-mips
CMDS=<<EOF
e asm.os=android
tk JNINativeInterface
tk jint
tk jobject
EOF
EXPECT=<<EOF
struct
typedef
typedef
EOF
RUN

NAME=jni tol load types manually
FILE=bins/elf/jni/jniO0-arm64
CMDS=<<EOF
tol types-jni
tk JNINativeInterface
tk JNIEnv
EOF
EXPECT=<<EOF
struct
typedef
EOF
RUN
