NAME=Dalvik HelloWorld afl
FILE=bins/dex/HelloWorld.dex
CMDS=aa; afl
EXPECT=<<EOF
0x10000025c    1 34           entry0
0x8000000000    1 2            sym.Ljava_io_PrintStream_.println_Ljava_lang_String__V
0x100000238    1 20           method.public.constructor.LHello_._init___V
0x8000000006    1 2            sym.Ljava_lang_Object_._init___V
0x100000290    1 84           method.public.LHello_.foo_I_V
0x8000000008    1 2            sym.Ljava_lang_StringBuilder_._init___V
0x800000000a    1 2            sym.Ljava_lang_StringBuilder_.append_Ljava_lang_String__Ljava_lang_StringBuilder
0x8000000002    1 2            sym.Ljava_lang_Integer_._init__I_V
0x8000000004    1 2            sym.Ljava_lang_Integer_.toString__Ljava_lang_String
0x800000000c    1 2            sym.Ljava_lang_StringBuilder_.toString__Ljava_lang_String
0x1000002f4    1 20           method.public.constructor.LWorld_._init___V
0x100000318    1 68           method.public.LWorld_.foo_I_V
EOF
RUN

NAME=Dalvik HelloWorld string xref
FILE=bins/dex/HelloWorld.dex
CMDS=aa; axt @ str.Findus
EXPECT=<<EOF
entry0 0x100000260 [DATA] const-string v1, str.Findus
EOF
RUN

NAME=Dalvik HelloWorld func xref
FILE=bins/dex/HelloWorld.dex
CMDS=aa; axt @ sym.LHello_._init___V
EXPECT=<<EOF
entry0 0x10000026e [CALL] invoke-direct {v0}, LHello;-><init>()V
EOF
RUN

NAME=Dalvik HelloWorld func xref to super method
FILE=bins/dex/org.radare.radare2installer.dex
CMDS=aaa; axt @ sym.Landroid_app_Activity_.onDestroy__V~invoke-super
EXPECT=<<EOF
method.public.Lorg_radare_radare2installer_ConsoleActivity_.onDestroy__V; void onDestroy() 0x100019e50 [CALL] invoke-super {v1}, Landroid/app/Activity;->onDestroy()V
method.public.Lorg_radare_radare2installer_LaunchActivity_.onDestroy__V 0x10001a256 [CALL] invoke-super {v1}, Landroid/app/Activity;->onDestroy()V
method.public.Lorg_radare_radare2installer_WebActivity_.onDestroy__V; void onDestroy() 0x10001e574 [CALL] invoke-super {v2}, Landroid/app/Activity;->onDestroy()V
EOF
RUN

NAME=Dalvik resolve virtual methods called via invoke-virtual
FILE=apk://bins/dex/org.radare.radare2installer.apk
CMDS=aaa ; axt @ sym.Lcom_ice_tar_TarEntry_.getUserName__Ljava_lang_String
EXPECT=<<EOF
entry0 0x10000c8ba [CALL] invoke-virtual {v1}, Lcom/ice/tar/TarEntry;->getUserName()Ljava/lang/String;
entry0 0x10000c9e6 [CALL] invoke-virtual {v1}, Lcom/ice/tar/TarEntry;->getUserName()Ljava/lang/String;
method.public.Lcom_ice_tar_TarEntry_.toString__Ljava_lang_String 0x10000f04a [CALL] invoke-virtual {v4}, Lcom/ice/tar/TarEntry;->getUserName()Ljava/lang/String;
EOF
RUN

NAME=Dalvik resolve imports called via invoke-virtual
FILE=apk://bins/dex/org.radare.radare2installer.apk
CMDS=aaa ; axt @ sym.Ljava_net_URL_.openStream__Ljava_io_InputStream
EXPECT=<<EOF
method.public.Ljavax_activation_URLDataSource_.getInputStream__Ljava_io_InputStream 0x100021180 [CALL] invoke-virtual {v0}, Ljava/net/URL;->openStream()Ljava/io/InputStream;
EOF
RUN

NAME=Dalvik regs
FILE=
CMDS=<<EOF
e asm.arch=dalvik
ar
EOF
EXPECT=<<EOF
v0 = 0x00000000
v1 = 0x00000000
v2 = 0x00000000
v3 = 0x00000000
v4 = 0x00000000
v5 = 0x00000000
v6 = 0x00000000
v7 = 0x00000000
v8 = 0x00000000
v9 = 0x00000000
v10 = 0x00000000
v11 = 0x00000000
v12 = 0x00000000
v13 = 0x00000000
v14 = 0x00000000
v15 = 0x00000000
v16 = 0x00000000
v17 = 0x00000000
v18 = 0x00000000
v19 = 0x00000000
v20 = 0x00000000
v21 = 0x00000000
v22 = 0x00000000
v23 = 0x00000000
v24 = 0x00000000
v25 = 0x00000000
v26 = 0x00000000
v27 = 0x00000000
v28 = 0x00000000
v29 = 0x00000000
v30 = 0x00000000
v31 = 0x00000000
v32 = 0x00000000
v33 = 0x00000000
v34 = 0x00000000
ip = 0x00000000
sp = 0x00000000
bp = 0x00000000
EOF
RUN
