NAME=baddr (1)
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-qe
EXPECT=<<EOF
0x00400410
0x004004d0
0x004004b0
EOF
RUN

NAME=baddr (2)
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-B 0x400000 -qe
EXPECT=<<EOF
0x00400410
0x004004d0
0x004004b0
EOF
RUN

NAME=baddr (2)
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-B 0x800000 -qe
EXPECT=<<EOF
0x00800410
0x008004d0
0x008004b0
EOF
RUN

NAME=baddr (3)
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-B 0 -qe
EXPECT=<<EOF
0x00000410
0x000004d0
0x000004b0
EOF
RUN

NAME=laddr 0
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-G 0 -e
EXPECT=<<EOF
[Entries]
     vaddr      paddr     hvaddr      haddr type    
----------------------------------------------------
0x00400410 0x00000410 0x00400018 0x00000018 program
0x004004d0 0x000004d0 0x006006e0 0x000006e0 init
0x004004b0 0x000004b0 0x006006e8 0x000006e8 fini

EOF
RUN

NAME=laddr 0 && baddr 0
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-G 0 -B 0 -e
EXPECT=<<EOF
[Entries]
     vaddr      paddr     hvaddr      haddr type    
----------------------------------------------------
0x00000410 0x00000410 0x00000018 0x00000018 program
0x000004d0 0x000004d0 0x002006e0 0x000006e0 init
0x000004b0 0x000004b0 0x002006e8 0x000006e8 fini

EOF
RUN

NAME=rz-bin -k file
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-k
EXIT_STATUS=1
EXPECT=
EXPECT_ERR=<<EOF
Missing file.
EOF
RUN

NAME=rz-bin -K md5 -S file
FILE=bins/pe/a.exe
TOOL=rz-bin
ARGS=-K md5 -S
EXPECT=<<EOF
[Sections]
     paddr  size      vaddr  vsize align perm name   type flags                                       md5                              
---------------------------------------------------------------------------------------------------------------------------------------
0x00000400 0xa00 0x00401000 0x1000   0x0 -r-x .text       CNT_CODE,CNT_INITIALIZED_DATA,ALIGN_16BYTES 3d6a5b8dc5e41b09659638ad5735e5b5
0x00000e00 0x200 0x00402000 0x1000   0x0 -rw- .data       CNT_INITIALIZED_DATA,ALIGN_4BYTES           b3c542ba67f2d1a949fa1a25ce22f7e3
0x00001000 0x200 0x00403000 0x1000   0x0 -r-- .rdata      CNT_INITIALIZED_DATA,ALIGN_4BYTES           c9a877a4e945b087b8323830442c88d6
0x00000000   0x0 0x00404000 0x1000   0x0 -rw- .bss        CNT_UNINITIALIZED_DATA,ALIGN_8BYTES
0x00001200 0x400 0x00405000 0x1000   0x0 -rw- .idata      CNT_INITIALIZED_DATA,ALIGN_4BYTES           963212dc58a74f32e0f6ffce84dcf7ea

EOF
RUN

NAME=rz-bin -s file pe
FILE=bins/pe/a.exe
TOOL=rz-bin
ARGS=-s
EXPECT=<<EOF
[Symbols]
nth      paddr      vaddr bind type size lib          name                            
--------------------------------------------------------------------------------------
  1 0x000012a0 0x004050a0 NONE FUNC    0 KERNEL32.dll imp.AddAtomA
  2 0x000012a4 0x004050a4 NONE FUNC    0 KERNEL32.dll imp.ExitProcess
  3 0x000012a8 0x004050a8 NONE FUNC    0 KERNEL32.dll imp.FindAtomA
  4 0x000012ac 0x004050ac NONE FUNC    0 KERNEL32.dll imp.GetAtomNameA
  5 0x000012b0 0x004050b0 NONE FUNC    0 KERNEL32.dll imp.SetUnhandledExceptionFilter
  1 0x000012bc 0x004050bc NONE FUNC    0 msvcrt.dll   imp.__getmainargs
  2 0x000012c0 0x004050c0 NONE FUNC    0 msvcrt.dll   imp.__p__environ
  3 0x000012c4 0x004050c4 NONE FUNC    0 msvcrt.dll   imp.__p__fmode
  4 0x000012c8 0x004050c8 NONE FUNC    0 msvcrt.dll   imp.__set_app_type
  5 0x000012cc 0x004050cc NONE FUNC    0 msvcrt.dll   imp._assert
  6 0x000012d0 0x004050d0 NONE FUNC    0 msvcrt.dll   imp._cexit
  7 0x000012d4 0x004050d4 NONE FUNC    0 msvcrt.dll   imp._iob
  8 0x000012d8 0x004050d8 NONE FUNC    0 msvcrt.dll   imp._onexit
  9 0x000012dc 0x004050dc NONE FUNC    0 msvcrt.dll   imp._setmode
 10 0x000012e0 0x004050e0 NONE FUNC    0 msvcrt.dll   imp.abort
 11 0x000012e4 0x004050e4 NONE FUNC    0 msvcrt.dll   imp.atexit
 12 0x000012e8 0x004050e8 NONE FUNC    0 msvcrt.dll   imp.free
 13 0x000012ec 0x004050ec NONE FUNC    0 msvcrt.dll   imp.malloc
 14 0x000012f0 0x004050f0 NONE FUNC    0 msvcrt.dll   imp.printf
 15 0x000012f4 0x004050f4 NONE FUNC    0 msvcrt.dll   imp.signal

EOF
RUN

NAME=rz-bin -s file elf
FILE=bins/elf/analysis/x86-helloworld-gcc
TOOL=rz-bin
ARGS=-s
EXPECT=<<EOF
[Symbols]
nth      paddr      vaddr bind   type   size lib name                                   
----------------------------------------------------------------------------------------
  4 0x000004ac 0x080484ac GLOBAL OBJ       4     _IO_stdin_used
  1 0x00000134 0x08048134 LOCAL  SECT      0     .interp
  2 0x00000148 0x08048148 LOCAL  SECT      0     .note.ABI-tag
  3 0x00000168 0x08048168 LOCAL  SECT      0     .note.gnu.build-id
  4 0x0000018c 0x0804818c LOCAL  SECT      0     .gnu.hash
  5 0x000001ac 0x080481ac LOCAL  SECT      0     .dynsym
  6 0x000001fc 0x080481fc LOCAL  SECT      0     .dynstr
  7 0x00000246 0x08048246 LOCAL  SECT      0     .gnu.version
  8 0x00000250 0x08048250 LOCAL  SECT      0     .gnu.version_r
  9 0x00000270 0x08048270 LOCAL  SECT      0     .rel.dyn
 10 0x00000278 0x08048278 LOCAL  SECT      0     .rel.plt
 11 0x00000290 0x08048290 LOCAL  SECT      0     .init
 12 0x000002c0 0x080482c0 LOCAL  SECT      0     .plt
 13 0x00000300 0x08048300 LOCAL  SECT      0     .text
 14 0x00000494 0x08048494 LOCAL  SECT      0     .fini
 15 0x000004a8 0x080484a8 LOCAL  SECT      0     .rodata
 16 0x000004c0 0x080484c0 LOCAL  SECT      0     .eh_frame_hdr
 17 0x000004ec 0x080484ec LOCAL  SECT      0     .eh_frame
 18 0x0000059c 0x0804959c LOCAL  SECT      0     .init_array
 19 0x000005a0 0x080495a0 LOCAL  SECT      0     .fini_array
 20 0x000005a4 0x080495a4 LOCAL  SECT      0     .jcr
 21 0x000005a8 0x080495a8 LOCAL  SECT      0     .dynamic
 22 0x00000690 0x08049690 LOCAL  SECT      0     .got
 23 0x00000694 0x08049694 LOCAL  SECT      0     .got.plt
 24 0x000006ac 0x080496ac LOCAL  SECT      0     .data
 25 ---------- 0x080496b4 LOCAL  SECT      0     .bss
 26 ---------- 0x00000000 LOCAL  SECT      0     .comment
 27 ---------- 0x00000000 LOCAL  FILE      0     init.c
 28 ---------- 0x00000000 LOCAL  FILE      0     unknown_28
 29 ---------- 0x00000000 LOCAL  FILE      0     crtstuff.c
 30 0x000005a4 0x080495a4 LOCAL  OBJ       0     __JCR_LIST__
 31 0x00000340 0x08048340 LOCAL  FUNC      0     deregister_tm_clones
 32 0x00000370 0x08048370 LOCAL  FUNC      0     register_tm_clones
 33 0x000003b0 0x080483b0 LOCAL  FUNC      0     __do_global_dtors_aux
 34 ---------- 0x080496b4 LOCAL  OBJ       1     completed.5979
 35 0x000005a0 0x080495a0 LOCAL  OBJ       0     __do_global_dtors_aux_fini_array_entry
 36 0x000003d0 0x080483d0 LOCAL  FUNC      0     frame_dummy
 37 0x0000059c 0x0804959c LOCAL  OBJ       0     __frame_dummy_init_array_entry
 38 ---------- 0x00000000 LOCAL  FILE      0     hello.c
 39 ---------- 0x00000000 LOCAL  FILE      0     crtstuff.c
 40 0x00000598 0x08048598 LOCAL  OBJ       0     __FRAME_END__
 41 0x000005a4 0x080495a4 LOCAL  OBJ       0     __JCR_END__
 42 ---------- 0x00000000 LOCAL  FILE      0     unknown_42
 43 0x000005a0 0x080495a0 LOCAL  NOTYPE    0     __init_array_end
 44 0x000005a8 0x080495a8 LOCAL  OBJ       0     _DYNAMIC
 45 0x0000059c 0x0804959c LOCAL  NOTYPE    0     __init_array_start
 46 0x00000694 0x08049694 LOCAL  OBJ       0     _GLOBAL_OFFSET_TABLE_
 47 0x00000490 0x08048490 GLOBAL FUNC      2     __libc_csu_fini
 49 0x00000330 0x08048330 GLOBAL FUNC      4     __x86.get_pc_thunk.bx
 50 0x000006ac 0x080496ac WEAK   NOTYPE    0     data_start
 51 ---------- 0x080496b4 GLOBAL NOTYPE    0     _edata
 52 0x00000494 0x08048494 GLOBAL FUNC      0     _fini
 53 0x000006ac 0x080496ac GLOBAL NOTYPE    0     __data_start
 56 0x000006b0 0x080496b0 GLOBAL OBJ       0     __dso_handle
 57 0x000004ac 0x080484ac GLOBAL OBJ       4     _IO_stdin_used
 59 0x00000420 0x08048420 GLOBAL FUNC     97     __libc_csu_init
 60 ---------- 0x080496b8 GLOBAL NOTYPE    0     _end
 61 0x00000300 0x08048300 GLOBAL FUNC      0     _start
 62 0x000004a8 0x080484a8 GLOBAL OBJ       4     _fp_hw
 63 ---------- 0x080496b4 GLOBAL NOTYPE    0     __bss_start
 64 0x00000400 0x08048400 GLOBAL FUNC     28     main
 66 ---------- 0x080496b4 GLOBAL OBJ       0     __TMC_END__
 68 0x00000290 0x08048290 GLOBAL FUNC      0     _init
  1 0x000002d0 0x080482d0 GLOBAL FUNC     16     imp.puts
  2 0x000002e0 0x080482e0 WEAK   NOTYPE   16     imp.__gmon_start__
  3 0x000002f0 0x080482f0 GLOBAL FUNC     16     imp.__libc_start_main

EOF
RUN

NAME=rz-bin -S file elf
FILE=bins/elf/analysis/x86-helloworld-gcc
TOOL=rz-bin
ARGS=-S
ENVS=RZ_BIN_PREFIX=prixfixe
EXPECT=<<EOF
[Sections]
     paddr  size      vaddr vsize align perm name                        type       flags         
--------------------------------------------------------------------------------------------------
0x00000000   0x0 ----------   0x0   0x0 ---- prixfixe.                   NULL       
0x00000134  0x13 0x08048134  0x13   0x0 -r-- prixfixe..interp            PROGBITS   alloc
0x00000148  0x20 0x08048148  0x20   0x0 -r-- prixfixe..note.ABI-tag      NOTE       alloc
0x00000168  0x24 0x08048168  0x24   0x0 -r-- prixfixe..note.gnu.build-id NOTE       alloc
0x0000018c  0x20 0x0804818c  0x20   0x0 -r-- prixfixe..gnu.hash          GNU_HASH   alloc
0x000001ac  0x50 0x080481ac  0x50   0x0 -r-- prixfixe..dynsym            DYNSYM     alloc
0x000001fc  0x4a 0x080481fc  0x4a   0x0 -r-- prixfixe..dynstr            STRTAB     alloc
0x00000246   0xa 0x08048246   0xa   0x0 -r-- prixfixe..gnu.version       VERSYM     alloc
0x00000250  0x20 0x08048250  0x20   0x0 -r-- prixfixe..gnu.version_r     VERNEED    alloc
0x00000270   0x8 0x08048270   0x8   0x0 -r-- prixfixe..rel.dyn           REL        alloc
0x00000278  0x18 0x08048278  0x18   0x0 -r-- prixfixe..rel.plt           REL        alloc
0x00000290  0x23 0x08048290  0x23   0x0 -r-x prixfixe..init              PROGBITS   alloc,execute
0x000002c0  0x40 0x080482c0  0x40   0x0 -r-x prixfixe..plt               PLT        alloc,execute
0x00000300 0x194 0x08048300 0x194   0x0 -r-x prixfixe..text              PROGBITS   alloc,execute
0x00000494  0x14 0x08048494  0x14   0x0 -r-x prixfixe..fini              PROGBITS   alloc,execute
0x000004a8  0x15 0x080484a8  0x15   0x0 -r-- prixfixe..rodata            PROGBITS   alloc
0x000004c0  0x2c 0x080484c0  0x2c   0x0 -r-- prixfixe..eh_frame_hdr      PROGBITS   alloc
0x000004ec  0xb0 0x080484ec  0xb0   0x0 -r-- prixfixe..eh_frame          PROGBITS   alloc
0x0000059c   0x4 0x0804959c   0x4   0x0 -rw- prixfixe..init_array        INIT_ARRAY write,alloc
0x000005a0   0x4 0x080495a0   0x4   0x0 -rw- prixfixe..fini_array        FINI_ARRAY write,alloc
0x000005a4   0x4 0x080495a4   0x4   0x0 -rw- prixfixe..jcr               PROGBITS   write,alloc
0x000005a8  0xe8 0x080495a8  0xe8   0x0 -rw- prixfixe..dynamic           DYNAMIC    write,alloc
0x00000690   0x4 0x08049690   0x4   0x0 -rw- prixfixe..got               PROGBITS   write,alloc
0x00000694  0x18 0x08049694  0x18   0x0 -rw- prixfixe..got.plt           PROGBITS   write,alloc
0x000006ac   0x8 0x080496ac   0x8   0x0 -rw- prixfixe..data              PROGBITS   write,alloc
0x000006b4   0x0 0x080496b4   0x4   0x0 -rw- prixfixe..bss               NOBITS     write,alloc
0x000006b4  0x11 ----------  0x11   0x0 ---- prixfixe..comment           PROGBITS   merge,strings
0x000006c5 0x106 ---------- 0x106   0x0 ---- prixfixe..shstrtab          STRTAB     
0x00000c7c 0x450 ---------- 0x450   0x0 ---- prixfixe..symtab            SYMTAB     
0x000010cc 0x257 ---------- 0x257   0x0 ---- prixfixe..strtab            STRTAB     

EOF
RUN


NAME=rz-bin -SS file elf
FILE=bins/elf/analysis/x86-helloworld-gcc
TOOL=rz-bin
ARGS=-SS
ENVS=RZ_BIN_PREFIX=prixfixe
EXPECT=<<EOF
[Segments]
     paddr  size      vaddr vsize  align perm name                  
--------------------------------------------------------------------
0x00000034 0x100 0x08048034 0x100    0x4 -r-x prixfixe.PHDR
0x00000134  0x13 0x08048134  0x13    0x1 -r-- prixfixe.INTERP
0x00000000 0x59c 0x08048000 0x59c 0x1000 -r-x prixfixe.LOAD0
0x0000059c 0x118 0x0804959c 0x11c 0x1000 -rw- prixfixe.LOAD1
0x000005a8  0xe8 0x080495a8  0xe8    0x4 -rw- prixfixe.DYNAMIC
0x00000148  0x44 0x08048148  0x44    0x4 -r-- prixfixe.NOTE
0x000004c0  0x2c 0x080484c0  0x2c    0x4 -r-- prixfixe.GNU_EH_FRAME
0x00000000   0x0 0x00000000   0x0    0x4 -rw- prixfixe.GNU_STACK
0x00000000  0x34 0x08048000  0x34    0x0 -rw- prixfixe.ehdr

EOF
RUN

NAME=rz-bin -SSS
FILE=bins/elf/analysis/x86-helloworld-gcc
TOOL=rz-bin
ARGS=-SSS
EXPECT=<<EOF
[Sections mapping]
Segment      Sections                                                                                                                                                                
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHDR         
INTERP       .interp
LOAD0        .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
LOAD1        .init_array .fini_array .jcr .dynamic .got .got.plt .data
DYNAMIC      .dynamic
NOTE         .note.ABI-tag .note.gnu.build-id
GNU_EH_FRAME .eh_frame_hdr
GNU_STACK    
ehdr         

EOF
RUN

NAME=rz-bin -z pe
FILE=bins/pe/a.exe
TOOL=rz-bin
ARGS=-z
EXPECT=<<EOF
[Strings]
     paddr      vaddr len size section type    string                                                                                                                                                                                                     
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0x00001008 0x00403008  28   29 .rdata  ascii   -LIBGCCW32-EH-3-SJLJ-MINGW32
0x00001028 0x00403028  44   45 .rdata  ascii   w32_sharedptr->size == sizeof(W32_EH_SHARED)
0x00001058 0x00403058 202  203 .rdata  ascii   /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_cross_i386-mingw32-gcc/i386-mingw32-gcc/work/gcc-3.4.5-20060117-2/gcc/config/i386/w32-shared-ptr.c
0x00001124 0x00403124  38   39 .rdata  ascii   GetAtomNameA (atom, s, sizeof(s)) != 0
0x000012fe 0x004050fe   8    9 .idata  ascii   AddAtomA
0x0000130a 0x0040510a  11   12 .idata  ascii   ExitProcess
0x00001318 0x00405118   9   10 .idata  ascii   FindAtomA
0x00001324 0x00405124  12   13 .idata  ascii   GetAtomNameA
0x00001334 0x00405134  27   28 .idata  ascii   SetUnhandledExceptionFilter
0x00001352 0x00405152  13   14 .idata  ascii   __getmainargs
0x00001362 0x00405162  12   13 .idata  ascii   __p__environ
0x00001372 0x00405172  10   11 .idata  ascii   __p__fmode
0x00001380 0x00405180  14   15 .idata  ascii   __set_app_type
0x00001392 0x00405192   7    8 .idata  ascii   _assert
0x0000139c 0x0040519c   6    7 .idata  ascii   _cexit
0x000013a6 0x004051a6   4    5 .idata  ascii   _iob
0x000013ae 0x004051ae   7    8 .idata  ascii   _onexit
0x000013b8 0x004051b8   8    9 .idata  ascii   _setmode
0x000013c4 0x004051c4   5    6 .idata  ascii   abort
0x000013cc 0x004051cc   6    7 .idata  ascii   atexit
0x000013d6 0x004051d6   4    5 .idata  ascii   free
0x000013de 0x004051de   6    7 .idata  ascii   malloc
0x000013e8 0x004051e8   6    7 .idata  ascii   printf
0x000013f2 0x004051f2   6    7 .idata  ascii   signal
0x000013fd 0x004051fd   4   16 .idata  utf32le PPPP
0x00001410 0x00405210  12   13 .idata  ascii   KERNEL32.dll
0x0000145c 0x0040525c  10   11 .idata  ascii   msvcrt.dll

EOF
RUN

NAME=rz-bin -zz pe
FILE=bins/pe/ioli/w32/crackme0x00.exe
TOOL=rz-bin
ARGS=-zz
REGEXP_FILTER_OUT=.+Password:.+
EXPECT=<<EOF
0x00002619 0x00404019 10 11 (.rdata) ascii Password: 
EOF
RUN

NAME=rz-bin -zzq pe
FILE=bins/pe/ioli/w32/crackme0x00.exe
TOOL=rz-bin
ARGS=-zzq
REGEXP_FILTER_OUT=.+Password:.+
EXPECT=<<EOF
0x404019 11 10 Password: 
EOF
RUN

NAME=rz-bin -zzqq pe
FILE=bins/pe/ioli/w32/crackme0x00.exe
TOOL=rz-bin
ARGS=-zzqq
REGEXP_FILTER_OUT=Password:.+
EXPECT=<<EOF
Password: 
EOF
RUN


NAME=rz-bin -z elf
FILE=bins/elf/analysis/x86-helloworld-gcc
TOOL=rz-bin
ARGS=-z
EXPECT=<<EOF
[Strings]
     paddr      vaddr len size section type  string            
---------------------------------------------------------------
0x000001fd 0x080481fd   9   10 .dynstr ascii libc.so.6
0x00000207 0x08048207  14   15 .dynstr ascii _IO_stdin_used
0x00000216 0x08048216   4    5 .dynstr ascii puts
0x0000021b 0x0804821b  17   18 .dynstr ascii __libc_start_main
0x0000022d 0x0804822d  14   15 .dynstr ascii __gmon_start__
0x0000023c 0x0804823c   9   10 .dynstr ascii GLIBC_2.0
0x000004b0 0x080484b0  12   13 .rodata ascii Hello world!

EOF
RUN

NAME=rz-bin -G 0x1000 -e fatmach0
FILE=bins/mach0/fatmach0-3true
TOOL=rz-bin
ARGS=-G 0x1000 -e
EXPECT=<<EOF
[Entries]
      vaddr      paddr     hvaddr      haddr type    
-----------------------------------------------------
0x100000ef8 0x00001ef8 ---------- 0x00000570 program

EOF
RUN

NAME=rz-bin -e fatmach0
FILE=bins/mach0/fatmach0-3true
TOOL=rz-bin
ARGS=-e
EXPECT=<<EOF
[Entries]
      vaddr      paddr     hvaddr      haddr type    
-----------------------------------------------------
0x100000ef8 0x00001ef8 ---------- 0x00000570 program

EOF
RUN

NAME=rz-bin -G 0x5000 -e fatmach0
FILE=bins/mach0/fatmach0-3true
TOOL=rz-bin
ARGS=-G 0x5000 -e
EXPECT=<<EOF
[Entries]
     vaddr      paddr     hvaddr      haddr type    
----------------------------------------------------
0x00001f44 0x00005f44 ---------- 0x00000420 program

EOF
RUN

NAME=rz-bin -a x86 -b 32 -e fatmach0
FILE=bins/mach0/fatmach0-3true
TOOL=rz-bin
ARGS=-a x86 -b 32 -e
EXPECT=<<EOF
[Entries]
     vaddr      paddr     hvaddr      haddr type    
----------------------------------------------------
0x00001f44 0x00005f44 ---------- 0x00000420 program

EOF
RUN

NAME=rz-bin -B 0x2000000 -G 0x1000 -e fatmach0
FILE=bins/mach0/fatmach0-3true
TOOL=rz-bin
ARGS=-B 0x2000000 -G 0x1000 -e
EXPECT=<<EOF
[Entries]
     vaddr      paddr     hvaddr      haddr type    
----------------------------------------------------
0x02000ef8 0x00001ef8 ---------- 0x00000570 program

EOF
RUN

NAME=rz-bin -B 0x2000000 -e arm64
FILE=bins/mach0/hello-ios-arm64
TOOL=rz-bin
ARGS=-B 0x2000000 -e
EXPECT=<<EOF
[Entries]
     vaddr      paddr     hvaddr      haddr type    
----------------------------------------------------
0x02007f34 0x00007f34 ---------- 0x00000468 program

EOF
RUN

NAME=rz-bin -a x86 -b 32 -i fatmach0
FILE=bins/mach0/fatmach0-3true
TOOL=rz-bin
ARGS=-a x86 -b 32 -i
EXPECT=<<EOF
[Imports]
nth      vaddr bind type lib name             
----------------------------------------------
  0 0x00001f94 NONE FUNC     exit
  1 ---------- NONE FUNC     dyld_stub_binder

EOF
RUN

NAME=rz-bin -G 0x5000 -i fatmach0
FILE=bins/mach0/fatmach0-3true
TOOL=rz-bin
ARGS=-G 0x5000 -i
EXPECT=<<EOF
[Imports]
nth      vaddr bind type lib name             
----------------------------------------------
  0 0x00001f94 NONE FUNC     exit
  1 ---------- NONE FUNC     dyld_stub_binder

EOF
RUN

NAME=rz-bin -qqz
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-qqz
EXPECT=<<EOF
__gmon_start__
libc.so.6
puts
__libc_start_main
GLIBC_2.2.5
Hello World
EOF
RUN

NAME=rz-bin -qqzz
FILE=bins/elf/analysis/hello-linux-x86_64
TOOL=rz-bin
ARGS=-qqzz
EXPECT=<<EOF
@8@
/lib/ld-linux-x86-64.so.2
__gmon_start__
libc.so.6
puts
__libc_start_main
GLIBC_2.2.5
\$H
l$ L
t$(L
|$0H
Hello World


;*3$"
P
GCC: (GNU) 4.7.2
.symtab
.strtab
.shstrtab
.interp
.note.ABI-tag
.note.gnu.build-id
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rela.dyn
.rela.plt
.init
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.jcr
.dynamic
.got
.got.plt
.data
.bss
.comment
init.c
crtstuff.c
__JCR_LIST__
deregister_tm_clones
register_tm_clones
__do_global_dtors_aux
completed.6724
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
hello.c
__FRAME_END__
__JCR_END__
__init_array_end
_DYNAMIC
__init_array_start
_GLOBAL_OFFSET_TABLE_
__libc_csu_fini
_ITM_deregisterTMCloneTable
data_start
puts@@GLIBC_2.2.5
_edata
_fini
__libc_start_main@@GLIBC_2.2.5
__data_start
__gmon_start__
__dso_handle
_IO_stdin_used
__libc_csu_init
_end
_start
__bss_start
main
_Jv_RegisterClasses
__TMC_END__
_ITM_registerTMCloneTable
_init
EOF
RUN

NAME=rz-bin -qOr
FILE=bins/elf/analysis/ls-linux-x86_64-zlul
TOOL=rz-bin
ARGS=-qOr/.data/-1
EXPECT=
RUN

NAME=rz-bin -ee -j
FILE=bins/elf/analysis/x86-helloworld-gcc
TOOL=rz-bin
ARGS=-ee -j
EXPECT=<<EOF
{"initfini":[{"vaddr":134513616,"paddr":976,"baddr":134512640,"laddr":0,"hvaddr":134518172,"haddr":1436,"type":"init"},{"vaddr":134513584,"paddr":944,"baddr":134512640,"laddr":0,"hvaddr":134518176,"haddr":1440,"type":"fini"}]}
EOF
RUN

NAME=-ee baddr 0
FILE=bins/elf/analysis/x86-helloworld-gcc
TOOL=rz-bin
ARGS=-ee -B 0
EXPECT=<<EOF
[Initfini]
     vaddr      paddr     hvaddr      haddr type 
-------------------------------------------------
0x000003d0 0x000003d0 0x0000159c 0x0000059c init
0x000003b0 0x000003b0 0x000015a0 0x000005a0 fini

EOF
RUN

NAME=rz-bin -g
FILE=bins/elf/analysis/x86-helloworld-gcc
TOOL=rz-bin
ARGS=-g
EXPECT=<<EOF
[Info]
arch     x86
cpu      N/A
features N/A
baddr    0x08048000
binsz    0x00001323
bintype  elf
bits     32
class    ELF32
compiler GCC: (GNU) 4.8.2
dbg_file N/A
endian   LE
hdr.csum N/A
guid     N/A
intrp    /lib/ld-linux.so.2
laddr    0x00000000
lang     c
machine  Intel 80386
maxopsz  16
minopsz  1
os       linux
cc       N/A
pcalign  1
relro    no
rpath    NONE
subsys   linux
stripped false
havecode true
va       true
static   false
linenum  true
lsyms    true
canary   false
pie      false
relrocs  true
nx       true

[Imports]
nth      vaddr bind   type   lib name              
---------------------------------------------------
  1 0x080482d0 GLOBAL FUNC       puts
  2 0x080482e0 WEAK   NOTYPE     __gmon_start__
  3 0x080482f0 GLOBAL FUNC       __libc_start_main

[Entries]
     vaddr      paddr     hvaddr      haddr type    
----------------------------------------------------
0x08048300 0x00000300 0x08048018 0x00000018 program
0x080483d0 0x000003d0 0x0804959c 0x0000059c init
0x080483b0 0x000003b0 0x080495a0 0x000005a0 fini

[Classes]
address min max name super 
---------------------------

[Symbols]
nth      paddr      vaddr bind   type   size lib name                                   
----------------------------------------------------------------------------------------
  4 0x000004ac 0x080484ac GLOBAL OBJ       4     _IO_stdin_used
  1 0x00000134 0x08048134 LOCAL  SECT      0     .interp
  2 0x00000148 0x08048148 LOCAL  SECT      0     .note.ABI-tag
  3 0x00000168 0x08048168 LOCAL  SECT      0     .note.gnu.build-id
  4 0x0000018c 0x0804818c LOCAL  SECT      0     .gnu.hash
  5 0x000001ac 0x080481ac LOCAL  SECT      0     .dynsym
  6 0x000001fc 0x080481fc LOCAL  SECT      0     .dynstr
  7 0x00000246 0x08048246 LOCAL  SECT      0     .gnu.version
  8 0x00000250 0x08048250 LOCAL  SECT      0     .gnu.version_r
  9 0x00000270 0x08048270 LOCAL  SECT      0     .rel.dyn
 10 0x00000278 0x08048278 LOCAL  SECT      0     .rel.plt
 11 0x00000290 0x08048290 LOCAL  SECT      0     .init
 12 0x000002c0 0x080482c0 LOCAL  SECT      0     .plt
 13 0x00000300 0x08048300 LOCAL  SECT      0     .text
 14 0x00000494 0x08048494 LOCAL  SECT      0     .fini
 15 0x000004a8 0x080484a8 LOCAL  SECT      0     .rodata
 16 0x000004c0 0x080484c0 LOCAL  SECT      0     .eh_frame_hdr
 17 0x000004ec 0x080484ec LOCAL  SECT      0     .eh_frame
 18 0x0000059c 0x0804959c LOCAL  SECT      0     .init_array
 19 0x000005a0 0x080495a0 LOCAL  SECT      0     .fini_array
 20 0x000005a4 0x080495a4 LOCAL  SECT      0     .jcr
 21 0x000005a8 0x080495a8 LOCAL  SECT      0     .dynamic
 22 0x00000690 0x08049690 LOCAL  SECT      0     .got
 23 0x00000694 0x08049694 LOCAL  SECT      0     .got.plt
 24 0x000006ac 0x080496ac LOCAL  SECT      0     .data
 25 ---------- 0x080496b4 LOCAL  SECT      0     .bss
 26 ---------- 0x00000000 LOCAL  SECT      0     .comment
 27 ---------- 0x00000000 LOCAL  FILE      0     init.c
 28 ---------- 0x00000000 LOCAL  FILE      0     unknown_28
 29 ---------- 0x00000000 LOCAL  FILE      0     crtstuff.c
 30 0x000005a4 0x080495a4 LOCAL  OBJ       0     __JCR_LIST__
 31 0x00000340 0x08048340 LOCAL  FUNC      0     deregister_tm_clones
 32 0x00000370 0x08048370 LOCAL  FUNC      0     register_tm_clones
 33 0x000003b0 0x080483b0 LOCAL  FUNC      0     __do_global_dtors_aux
 34 ---------- 0x080496b4 LOCAL  OBJ       1     completed.5979
 35 0x000005a0 0x080495a0 LOCAL  OBJ       0     __do_global_dtors_aux_fini_array_entry
 36 0x000003d0 0x080483d0 LOCAL  FUNC      0     frame_dummy
 37 0x0000059c 0x0804959c LOCAL  OBJ       0     __frame_dummy_init_array_entry
 38 ---------- 0x00000000 LOCAL  FILE      0     hello.c
 39 ---------- 0x00000000 LOCAL  FILE      0     crtstuff.c
 40 0x00000598 0x08048598 LOCAL  OBJ       0     __FRAME_END__
 41 0x000005a4 0x080495a4 LOCAL  OBJ       0     __JCR_END__
 42 ---------- 0x00000000 LOCAL  FILE      0     unknown_42
 43 0x000005a0 0x080495a0 LOCAL  NOTYPE    0     __init_array_end
 44 0x000005a8 0x080495a8 LOCAL  OBJ       0     _DYNAMIC
 45 0x0000059c 0x0804959c LOCAL  NOTYPE    0     __init_array_start
 46 0x00000694 0x08049694 LOCAL  OBJ       0     _GLOBAL_OFFSET_TABLE_
 47 0x00000490 0x08048490 GLOBAL FUNC      2     __libc_csu_fini
 49 0x00000330 0x08048330 GLOBAL FUNC      4     __x86.get_pc_thunk.bx
 50 0x000006ac 0x080496ac WEAK   NOTYPE    0     data_start
 51 ---------- 0x080496b4 GLOBAL NOTYPE    0     _edata
 52 0x00000494 0x08048494 GLOBAL FUNC      0     _fini
 53 0x000006ac 0x080496ac GLOBAL NOTYPE    0     __data_start
 56 0x000006b0 0x080496b0 GLOBAL OBJ       0     __dso_handle
 57 0x000004ac 0x080484ac GLOBAL OBJ       4     _IO_stdin_used
 59 0x00000420 0x08048420 GLOBAL FUNC     97     __libc_csu_init
 60 ---------- 0x080496b8 GLOBAL NOTYPE    0     _end
 61 0x00000300 0x08048300 GLOBAL FUNC      0     _start
 62 0x000004a8 0x080484a8 GLOBAL OBJ       4     _fp_hw
 63 ---------- 0x080496b4 GLOBAL NOTYPE    0     __bss_start
 64 0x00000400 0x08048400 GLOBAL FUNC     28     main
 66 ---------- 0x080496b4 GLOBAL OBJ       0     __TMC_END__
 68 0x00000290 0x08048290 GLOBAL FUNC      0     _init
  1 0x000002d0 0x080482d0 GLOBAL FUNC     16     imp.puts
  2 0x000002e0 0x080482e0 WEAK   NOTYPE   16     imp.__gmon_start__
  3 0x000002f0 0x080482f0 GLOBAL FUNC     16     imp.__libc_start_main

[Sections]
     paddr  size      vaddr vsize align perm name               type       flags         
-----------------------------------------------------------------------------------------
0x00000000   0x0 ----------   0x0   0x0 ----                    NULL       
0x00000134  0x13 0x08048134  0x13   0x0 -r-- .interp            PROGBITS   alloc
0x00000148  0x20 0x08048148  0x20   0x0 -r-- .note.ABI-tag      NOTE       alloc
0x00000168  0x24 0x08048168  0x24   0x0 -r-- .note.gnu.build-id NOTE       alloc
0x0000018c  0x20 0x0804818c  0x20   0x0 -r-- .gnu.hash          GNU_HASH   alloc
0x000001ac  0x50 0x080481ac  0x50   0x0 -r-- .dynsym            DYNSYM     alloc
0x000001fc  0x4a 0x080481fc  0x4a   0x0 -r-- .dynstr            STRTAB     alloc
0x00000246   0xa 0x08048246   0xa   0x0 -r-- .gnu.version       VERSYM     alloc
0x00000250  0x20 0x08048250  0x20   0x0 -r-- .gnu.version_r     VERNEED    alloc
0x00000270   0x8 0x08048270   0x8   0x0 -r-- .rel.dyn           REL        alloc
0x00000278  0x18 0x08048278  0x18   0x0 -r-- .rel.plt           REL        alloc
0x00000290  0x23 0x08048290  0x23   0x0 -r-x .init              PROGBITS   alloc,execute
0x000002c0  0x40 0x080482c0  0x40   0x0 -r-x .plt               PLT        alloc,execute
0x00000300 0x194 0x08048300 0x194   0x0 -r-x .text              PROGBITS   alloc,execute
0x00000494  0x14 0x08048494  0x14   0x0 -r-x .fini              PROGBITS   alloc,execute
0x000004a8  0x15 0x080484a8  0x15   0x0 -r-- .rodata            PROGBITS   alloc
0x000004c0  0x2c 0x080484c0  0x2c   0x0 -r-- .eh_frame_hdr      PROGBITS   alloc
0x000004ec  0xb0 0x080484ec  0xb0   0x0 -r-- .eh_frame          PROGBITS   alloc
0x0000059c   0x4 0x0804959c   0x4   0x0 -rw- .init_array        INIT_ARRAY write,alloc
0x000005a0   0x4 0x080495a0   0x4   0x0 -rw- .fini_array        FINI_ARRAY write,alloc
0x000005a4   0x4 0x080495a4   0x4   0x0 -rw- .jcr               PROGBITS   write,alloc
0x000005a8  0xe8 0x080495a8  0xe8   0x0 -rw- .dynamic           DYNAMIC    write,alloc
0x00000690   0x4 0x08049690   0x4   0x0 -rw- .got               PROGBITS   write,alloc
0x00000694  0x18 0x08049694  0x18   0x0 -rw- .got.plt           PROGBITS   write,alloc
0x000006ac   0x8 0x080496ac   0x8   0x0 -rw- .data              PROGBITS   write,alloc
0x000006b4   0x0 0x080496b4   0x4   0x0 -rw- .bss               NOBITS     write,alloc
0x000006b4  0x11 ----------  0x11   0x0 ---- .comment           PROGBITS   merge,strings
0x000006c5 0x106 ---------- 0x106   0x0 ---- .shstrtab          STRTAB     
0x00000c7c 0x450 ---------- 0x450   0x0 ---- .symtab            SYMTAB     
0x000010cc 0x257 ---------- 0x257   0x0 ---- .strtab            STRTAB     

[Segments]
     paddr  size      vaddr vsize  align perm name         
-----------------------------------------------------------
0x00000034 0x100 0x08048034 0x100    0x4 -r-x PHDR
0x00000134  0x13 0x08048134  0x13    0x1 -r-- INTERP
0x00000000 0x59c 0x08048000 0x59c 0x1000 -r-x LOAD0
0x0000059c 0x118 0x0804959c 0x11c 0x1000 -rw- LOAD1
0x000005a8  0xe8 0x080495a8  0xe8    0x4 -rw- DYNAMIC
0x00000148  0x44 0x08048148  0x44    0x4 -r-- NOTE
0x000004c0  0x2c 0x080484c0  0x2c    0x4 -r-- GNU_EH_FRAME
0x00000000   0x0 0x00000000   0x0    0x4 -rw- GNU_STACK
0x00000000  0x34 0x08048000  0x34    0x0 -rw- ehdr

[Strings]
     paddr      vaddr len size section type  string            
---------------------------------------------------------------
0x000001fd 0x080481fd   9   10 .dynstr ascii libc.so.6
0x00000207 0x08048207  14   15 .dynstr ascii _IO_stdin_used
0x00000216 0x08048216   4    5 .dynstr ascii puts
0x0000021b 0x0804821b  17   18 .dynstr ascii __libc_start_main
0x0000022d 0x0804822d  14   15 .dynstr ascii __gmon_start__
0x0000023c 0x0804823c   9   10 .dynstr ascii GLIBC_2.0
0x000004b0 0x080484b0  12   13 .rodata ascii Hello world!

[Main]
     vaddr      paddr 
----------------------
0x08048400 0x00000400

[Dwarf]
[Relocs]
     vaddr      paddr type           name              
-------------------------------------------------------
0x08049690 0x00000690 R_386_GLOB_DAT __gmon_start__
0x080496a0 0x000006a0 R_386_JMP_SLOT puts
0x080496a4 0x000006a4 R_386_JMP_SLOT __gmon_start__
0x080496a8 0x000006a8 R_386_JMP_SLOT __libc_start_main

[Fields]
     paddr name            vaddr comment                                         
---------------------------------------------------------------------------------
0x00000000 MAGIC      0x00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
0x00000010 Type       0x00000010 0x0002
0x00000012 Machine    0x00000012 0x0003
0x00000014 Version    0x00000014 0x00000001
0x00000018 Entrypoint 0x00000018 0x08048300
0x0000001c PhOff      0x0000001c 0x00000034
0x00000020 ShOff      0x00000020 0x000007cc
0x00000024 Flags      0x00000024 0x0000
0x00000028 EhSize     0x00000028 52
0x0000002a PhentSize  0x0000002a 32
0x0000002c PhNum      0x0000002c 8
0x0000002e ShentSize  0x0000002e 40
0x00000030 ShNum      0x00000030 30
0x00000032 ShStrndx   0x00000032 27

[Libs]
library   
----------
libc.so.6

[Size]
4899
[Versioninfo]
Version symbols has 5 entries:
 Addr: 0x08048246  Offset: 0x00000246
  0x00000000: 0 (*local*)
  0x00000001: 2 (GLIBC_2.0)
  0x00000002: 0 (*local*)
  0x00000003: 2 (GLIBC_2.0)
  0x00000004: 1 (*global*)


Version need has 1 entries:
 Addr: 0x08048250  Offset: 0x00000250
  0x00000250: Version: 1  File: libc.so.6  Cnt: 1
  0x00000260:   Name: GLIBC_2.0  Flags: none Version: 2
[Initfini]
     vaddr      paddr     hvaddr      haddr type 
-------------------------------------------------
0x080483d0 0x000003d0 0x0804959c 0x0000059c init
0x080483b0 0x000003b0 0x080495a0 0x000005a0 fini

[Sections mapping]
Segment      Sections                                                                                                                                                                
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHDR         
INTERP       .interp
LOAD0        .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
LOAD1        .init_array .fini_array .jcr .dynamic .got .got.plt .data
DYNAMIC      .dynamic
NOTE         .note.ABI-tag .note.gnu.build-id
GNU_EH_FRAME .eh_frame_hdr
GNU_STACK    
ehdr         

EOF
RUN

NAME=rz-bin -x a.out
FILE=bins/mach0/a.out
CMDS=<<EOF
!rz-bin -x bins/mach0/a.out
!rm -r a.out.fat
EOF
EXPECT=<<EOF
a.out.fat/a.out.arm_32.0 created (49424)
a.out.fat/a.out.arm_64.1 created (49420)
EOF
RUN

NAME=rz-bin -I elf_cpp
FILE=bins/elf/analysis/a.out.cpp
TOOL=rz-bin
ARGS=-I
EXPECT=<<EOF
[Info]
arch     x86
cpu      N/A
features N/A
baddr    0x00000000
binsz    0x00001b8b
bintype  elf
bits     64
class    ELF64
compiler GCC: (Ubuntu 7.3.0-16ubuntu3) 7.3.0
dbg_file N/A
endian   LE
hdr.csum N/A
guid     N/A
intrp    /lib64/ld-linux-x86-64.so.2
laddr    0x00000000
lang     c++
machine  AMD x86-64 architecture
maxopsz  16
minopsz  1
os       linux
cc       N/A
pcalign  1
relro    full
rpath    NONE
subsys   linux
stripped false
havecode true
va       true
static   false
linenum  true
lsyms    true
canary   false
pie      true
relrocs  true
nx       true

EOF
RUN

NAME=rz-bin -I asan
FILE=bins/elf/analysis/a.out.asan
TOOL=rz-bin
ARGS=-I
EXPECT=<<EOF
[Info]
arch           x86
cpu            N/A
features       N/A
baddr          0x00400000
binsz          0x001876b7
bintype        elf
bits           64
class          ELF64
compiler       GCC: (Debian 8.2.0-5) 8.2.0 clang version 6.0.1-6 (tags/RELEASE_601/final)
dbg_file       N/A
endian         LE
hdr.csum       N/A
guid           N/A
intrp          /lib64/ld-linux-x86-64.so.2
laddr          0x00000000
lang           c++
machine        AMD x86-64 architecture
maxopsz        16
minopsz        1
os             linux
cc             N/A
pcalign        1
relro          partial
rpath          NONE
subsys         linux
stripped       false
havecode       true
va             true
static         false
linenum        true
lsyms          true
canary         false
pie            false
relrocs        true
nx             true
fortify_source true
sanitizers     ubsan,asan

EOF
RUN

NAME=rz-bin -I apple-blocks-ext
FILE=bins/mach0/mach0-blocks-ext
TOOL=rz-bin
ARGS=-I
EXPECT=<<EOF
[Info]
arch     x86
cpu      x86 64 all
features N/A
baddr    0x100000000
binsz    0x00002664
bintype  mach0
bits     64
class    MACH064
compiler N/A
dbg_file N/A
endian   LE
hdr.csum N/A
guid     N/A
intrp    /usr/lib/dyld
laddr    0x00000000
lang     c++
machine  x86 64 all
maxopsz  16
minopsz  1
os       darwin
cc       N/A
pcalign  1
rpath    N/A
subsys   macOS
stripped false
havecode true
va       true
static   false
linenum  false
lsyms    false
canary   false
pie      true
relrocs  false
nx       false

EOF
RUN

NAME=rz-bin -s right symbols
FILE=bins/elf/libc.so.0
TOOL=rz-bin
ARGS=-s
REGEXP_FILTER_OUT=.+0002edb0.+
EXPECT=<<EOF
 149 0x0002edb0 0x0002edb0 GLOBAL FUNC    356     getc_unlocked
 402 0x0002edb0 0x0002edb0 GLOBAL FUNC    356     __fgetc_unlocked
 980 0x0002edb0 0x0002edb0 GLOBAL FUNC    356     fgetc_unlocked
EOF
RUN

NAME=rz-bin -V
FILE=bins/pe/version_cust.exe
TOOL=rz-bin
ARGS=-V
EXPECT=<<EOF
[Versioninfo]
=== VS_VERSIONINFO ===

# VS_FIXEDFILEINFO

  Signature: 0xfeef04bd
  StrucVersion: 0x0
  FileVersion: 0.0.0.0
  ProductVersion: 0.0.0.0
  FileFlagsMask: 0x0
  FileFlags: 0x0
  FileOS: 0x0
  FileType: 0x0
  FileSubType: 0x0

# StringTable

EOF
RUN

NAME=rz-bin -c
FILE=bins/java/test.class
TOOL=rz-bin
ARGS=-c
EXPECT=<<EOF
[Classes]
   address        min        max name super              
---------------------------------------------------------
0x00000000 0x000008f9 0x00000bcd test groovy.lang.Script

EOF
RUN

NAME=rz-bin -cq
FILE=bins/java/test.class
TOOL=rz-bin
ARGS=-cq
EXPECT=<<EOF
0x00000000 [0x000008f9 - 0x00000bcd] test groovy.lang.Script
EOF
RUN

NAME=rz-bin rust static type
FILE=_ZN71_$LT$Test$u20$$u2b$$u20$$u27$static$u20$as$u20$foo..Bar$LT$Test$GT$$GT$3barE
TOOL=rz-bin
ARGS=-D rust
EXPECT=<<EOF
<Test + 'static as foo::Bar<Test>>::bar
EOF
RUN

NAME=rz-bin -D java
FILE=Fake([BCDFIJSZ)Ltest/class/name;
TOOL=rz-bin
ARGS=-D java
EXPECT=<<EOF
test.class.name Fake(byte[], char, double, float, int, long, short, boolean)
EOF
RUN

NAME=rz-bin -D pascal
FILE=EXAMPLE_$$_SUMOFSQUARES$LONGINT$$LONGINT
TOOL=rz-bin
ARGS=-D pascal
EXPECT=<<EOF
unit example sumofsquares(longint)longint
EOF
RUN

NAME=rz-bin -D Invalid
FILE=XXXXX
TOOL=rz-bin
ARGS=-D Invalid
EXIT_STATUS=1
EXPECT_ERR=
EXPECT=<<EOF
Language 'Invalid' is unsupported
List of supported languages:
java   LGPL3        deroad
msvc   LGPL3        inisider
objc   LGPL3        pancake
pascal LGPL3        deroad
c++    LGPL3        billow
rust   LGPL3        Dhruv Maroo/RizinOrg
EOF
RUN

NAME=rz-bin -O help
FILE=bins/elf/libc.so.0
TOOL=rz-bin
ARGS=-O help
EXPECT=<<EOF
Usage: iO [expression]:
 d/s/1024          dump symbols
 d/S/.text         dump section
 c                 show Codesign data
 C                 show LDID entitlements
EOF
RUN

NAME=rz-bin -O h
FILE=bins/elf/libc.so.0
TOOL=rz-bin
ARGS=-O h
EXPECT=<<EOF
Usage: iO [expression]:
 d/s/1024          dump symbols
 d/S/.text         dump section
 c                 show Codesign data
 C                 show LDID entitlements
EOF
RUN

NAME=rz-bin -O bad op
FILE==
TOOL=rz-bin
ARGS=-O bad_op =
EXPECT_ERR=<<EOF
Unknown operation. use -O help
EOF
RUN

NAME=rz-bin -L
TOOL=rz-bin
ARGS=-L any
EXPECT=<<EOF
Name: any
Description: Dummy format binary
License: LGPL3
Author: nibble
EOF
RUN

NAME=rz-bin -Lq
FILE==
TOOL=rz-bin
ARGS=-Lq any
EXPECT=<<EOF
any
EOF
RUN

NAME=rz-bin -Lj
FILE==
TOOL=rz-bin
ARGS=-Lj any
EXPECT=<<EOF
{"name":"any","description":"Dummy format binary","license":"LGPL3"}
EOF
RUN

NAME=rz-bin -U
FILE=bins/pe/resource.exe
TOOL=rz-bin
ARGS=-U
EXPECT=<<EOF
[Resources]
Resource 0
  name: 29524
  timestamp: Thu Jan  1 00:00:00 1970 UTC
  vaddr: 0x00401168
  paddr: 0x00000368
  size: 32
  type: UNKNOWN (789)
  language: LANG_NEUTRAL
EOF
RUN

NAME=rz-bin -E
FILE=bins/pe/dll.dll
TOOL=rz-bin
ARGS=-E
EXPECT=<<EOF
[Exports]
nth      paddr      vaddr bind   type size lib     name   
----------------------------------------------------------
  0 0x00000224 0x01001024 GLOBAL FUNC    0 dll.dll export

EOF
RUN

NAME=rz-bin -l
FILE=bins/pe/ioli/w32/crackme0x00.exe
TOOL=rz-bin
ARGS=-l
REGEXP_FILTER_OUT=.+kernel32\.dll.+
EXPECT=
RUN

NAME=rz-bin -Z
FILE=bins/pe/base.exe
TOOL=rz-bin
ARGS=-Z
EXPECT=<<EOF
[Size]
216569
EOF
RUN

NAME=rz-bin -Zj
FILE=bins/pe/base.exe
TOOL=rz-bin
ARGS=-Zj
EXPECT=<<EOF
{"size":216569}
EOF
RUN

NAME=rz-bin -H
FILE=bins/pe/base.exe
TOOL=rz-bin
ARGS=-H
REGEXP_FILTER_OUT=.+Machine.+
EXPECT=<<EOF
0x00000084 Machine                                 0x00000084 0x0000014c
EOF
RUN

NAME=rz-bin -d
FILE=bins/elf/analysis/dwarftest
TOOL=rz-bin
ARGS=-d
REGEXP_FILTER_OUT=0x00400535 /tmp/r2-regressions/\./dwarftest\.c
EXPECT=<<EOF
0x00400535	/tmp/r2-regressions/./dwarftest.c
EOF
RUN

NAME=rz-bin -dj
FILE=bins/elf/analysis/dwarftest
TOOL=rz-bin
ARGS=-dj
EXPECT=<<EOF
{"dwarf":[{"file":"dwarftest.c","line":4,"addr":4195629},{"file":"dwarftest.c","line":7,"addr":4195637},{"file":"dwarftest.c","line":8,"addr":4195646},{"file":"dwarftest.c","line":7,"addr":4195656},{"file":"dwarftest.c","line":7,"addr":4195660},{"file":"dwarftest.c","line":11,"addr":4195666},{"file":"dwarftest.c","line":12,"addr":4195671},{"line":0,"addr":4195673}]}
EOF
RUN

NAME=rz-bin -P
FILE=bins/pdb/Project1.pdb
TOOL=rz-bin
ARGS=-P
REGEXP_FILTER_OUT=.+R2_TEST_UNION.+
EXPECT=<<EOF
union R2_TEST_UNION {
EOF
RUN

NAME=rz-bin -Pj
FILE=bins/pdb/minimal.pdb
TOOL=rz-bin
ARGS=-Pj
EXPECT=<<EOF
{"pdb":[{"modules":[{"module_name":"* Linker Generated Manifest RES *","object_file_name":""},{"module_name":"C:\\Users\\emuresan\\source\\repos\\minimal\\Release\\main.obj","object_file_name":"C:\\Users\\emuresan\\source\\repos\\minimal\\Release\\main.obj"},{"module_name":"* Linker *","object_file_name":""}]},{"types":[{"type":"structure","name":"struct_typedef","size":7,"members":[{"member_type":"char","member_name":"a","offset":0},{"member_type":"int16_t","member_name":"b","offset":1},{"member_type":"int32_t","member_name":"c","offset":3}]},{"type":"union","name":"type_0x1004","size":4,"members":[{"member_type":"char [4]","member_name":"a","offset":0},{"member_type":"int32_t","member_name":"b","offset":0}]},{"type":"structure","name":"unnamed_member_types_typedef","size":8,"members":[{"member_type":"union type_0x1004","member_name":"a","offset":0},{"member_type":"int32_t","member_name":"b","offset":4}]},{"type":"structure","name":"bitfield_typedef","size":1,"members":[{"member_type":"unsigned char","member_name":"a","offset":0},{"member_type":"unsigned char","member_name":"b","offset":0},{"member_type":"unsigned char","member_name":"c","offset":0}]},{"type":"union","name":"union_typedef","size":4,"members":[{"member_type":"char","member_name":"a","offset":0},{"member_type":"int16_t","member_name":"b","offset":0},{"member_type":"int32_t","member_name":"c","offset":0}]}]},{"gvars":[{"address":12292,"symtype":4366,"section_name":".data","gdata_name":"_uninitialized_global"},{"address":12288,"symtype":4366,"section_name":".data","gdata_name":"_initialized_global"},{"address":4096,"symtype":4366,"section_name":".text","gdata_name":"_function"},{"address":4182,"symtype":4366,"section_name":".text","gdata_name":"_mainCRTStartup"},{"address":4120,"symtype":4366,"section_name":".text","gdata_name":"_main"}]}]}
EOF
RUN

NAME=rz-bin load elf but with search.str.min_length=2
FILE=bins/elf/smallstrings.elf
TOOL=rz-bin
ARGS=-z -N2
EXPECT=<<EOF
[Strings]
     paddr      vaddr len size section type  string                      
-------------------------------------------------------------------------
0x00000471 0x00000471  17   18 .dynstr ascii __libc_start_main
0x00000483 0x00000483  14   15 .dynstr ascii __cxa_finalize
0x00000492 0x00000492   9   10 .dynstr ascii libc.so.6
0x0000049c 0x0000049c  11   12 .dynstr ascii GLIBC_2.2.5
0x000004a8 0x000004a8  10   11 .dynstr ascii GLIBC_2.34
0x000004b3 0x000004b3  27   28 .dynstr ascii _ITM_deregisterTMCloneTable
0x000004cf 0x000004cf  14   15 .dynstr ascii __gmon_start__
0x000004de 0x000004de  25   26 .dynstr ascii _ITM_registerTMCloneTable
0x00002006 0x00002006   2    3 .rodata ascii 22
0x00002009 0x00002009   3    4 .rodata ascii 333
0x0000200d 0x0000200d   4    5 .rodata ascii 4444

EOF
RUN

NAME=Issue #4910 - segfault
FILE=bins/cmd/search/string_encodings/Latin-Lipsum.ascii
TOOL=rz-bin
ARGS=-z -N ":<dH"
EXPECT=<<EOF
[Strings]
paddr vaddr len size section type string 
-----------------------------------------

EOF
EXPECT_ERR=
RUN

NAME=fat binary - endianness
FILE=bins/mach0/2048-NeXTSTEP
TOOL=rz-bin
ARGS=-I -A
EXPECT=<<EOF
[Archs]
    offset  size arch  bits machine  big_endian 
------------------------------------------------
0x00002000 49152 m68k    32 mc68030  true
0x0000e000 40960 x86     32 386      false
0x00018000 49152 hppa    32 hppa7100 true
0x00024000 49152 sparc   32 all      true

[Info]
arch     m68k
cpu      mc68030
features N/A
baddr    0x00002000
binsz    0x0000e000
bintype  mach0
bits     32
class    MACH0
compiler N/A
dbg_file N/A
endian   BE
hdr.csum N/A
guid     N/A
intrp    N/A
laddr    0x00000000
lang     c
machine  mc68030
maxopsz  22
minopsz  2
os       darwin
cc       N/A
pcalign  2
rpath    N/A
subsys   unknown
stripped false
havecode true
va       true
static   true
linenum  false
lsyms    false
canary   false
pie      false
relrocs  false
nx       false

EOF
EXPECT_ERR=
RUN
