NAME=rz-gg -a x86 -b 64 -p A200 -d 50:0xccccccb
TOOL=rz-gg
ARGS=-a x86 -b 64 -p A200 -d 50:0xccccccb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cbcccc0c4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -a x86 -b 64 -p A200 -d 50:0xcb
TOOL=rz-gg
ARGS=-a x86 -b 64 -p A200 -d 50:0xcb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cb0000004141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -a x86 -b 64 -p A10 -d 50:0xcb
TOOL=rz-gg
ARGS=-a x86 -b 64 -p A10 -d 50:0xcb
EXPECT=<<EOF
41414141414141414141
EOF
EXPECT_ERR=<<EOF
ERROR: egg: cannot patch outside
EOF
RUN

NAME=rz-gg -a x86 -b 64 -p A20 -w 10:cb
TOOL=rz-gg
ARGS=-a x86 -b 64 -p A20 -w 10:cb
EXPECT=<<EOF
41414141414141414141cb414141414141414141
EOF
RUN

NAME=rz-gg -a x86 -b 64 -p A20 -D 10:33
TOOL=rz-gg
ARGS=-a x86 -b 64 -p A20 -D 10:33
EXPECT=<<EOF
4141414141414141414121000000000000004141
EOF
RUN

NAME=rz-gg -a x86 -b 64 -p n2t2a2s2
TOOL=rz-gg
ARGS=-a x86 -b 64 -p n2t2a2s2
EXPECT=<<EOF
00004141cccc9090
EOF
RUN

NAME=rz-gg -i exec -z -a x86 -b32
TOOL=rz-gg
ARGS=-i exec -z -k linux -a x86 -b32
EXPECT=<<EOF
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"
EOF
RUN

NAME=rz-gg -k linux -i exec  -a x86 -b32 -p n3N3
TOOL=rz-gg
ARGS=-k linux -i exec  -a x86 -b32 -p n3N3
EXPECT=<<EOF
90909031c050682f2f7368682f62696e89e3505389e199b00bcd80909090
EOF
RUN

NAME=rz-gg -k linux  -a x86 -b32 -p n80 -w 79:c3
TOOL=rz-gg
ARGS=-k linux  -a x86 -b32 -p n80 -w 79:c3
EXPECT=<<EOF
90909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090c3
EOF
RUN

NAME=rz-gg -q 0x45414146
TOOL=rz-gg
ARGS=-q 0x45414146
EXPECT=<<EOF
Little endian: -1
Big endian: 12
EOF
RUN

NAME=rz-gg -q 45414146
TOOL=rz-gg
ARGS=-q 45414146
EXIT_STATUS=1
EXPECT=
EXPECT_ERR=<<EOF
ERROR: rz-gg: need hex value with `0x' prefix e.g. 0x41414142
EOF
RUN

NAME=rz-gg -k linux -a x86 -b32 simple_cmp.r
TOOL=rz-gg
ARGS=-k linux -a x86 -b32 bins/other/rz-gg/simple_cmp.r
EXPECT=<<EOF
5589e581ec80000000c745086869210ac7450c00000000c74510000000008d4508898504000000bb00000000bb01000000899d05000000bb00000000bb02000000899d06000000ff7504583b45067f1e6a04ff75046a018b1c248b4c24048b542408b804000000cd8083c40ceb176a008b1c24b801000000cd8083c40481c4800000005dc3ebe7
EOF
RUN

#CLANG=e900000000488d3524000000bf01000000b80400000248c7c2070000000f05b80100000248c7c7000000000f0531c0c348656c6c6f210a00
NAME=rz-ggc bins/other/rz-gg/hi.c
BROKEN=1 # output depends on host C compiler/version
TOOL=rz-gg
ARGS=bins/other/rz-gg/hi.c
REGEXP_FILTER_OUT=e9.+
EXPECT=<<EOF
e90800000048656c6c6f210a00bf01000000488d35ecffffffba07000000b8010000000f05b83c0000004030ff0f05c3
EOF
RUN

NAME=rz-gg -L
TOOL=rz-gg
ARGS=-L
REGEXP_FILTER_OUT=encoders.+
EXPECT=<<EOF
encoders:
EOF
RUN

NAME=rz-gg empty include
FILE=bins/other/rz-gg/hi.c
CMDS=!rz-gg -I "" bins/other/rz-gg/hi.c
EXPECT_ERR=<<EOF
ERROR: rz-gg: cannot open empty include path
EOF
RUN

NAME=rz-gg empty contents
FILE=bins/other/rz-gg/hi.c
CMDS=!rz-gg -C "" bins/other/rz-gg/hi.c
EXPECT_ERR=<<EOF
ERROR: rz-gg: cannot open empty contents path
EOF
RUN

NAME=rz-gg debruijn sequence 1
TOOL=rz-gg
ARGS=-r -P 2
EXPECT=AA
RUN

NAME=rz-gg debruijn sequence 2
TOOL=rz-gg
ARGS=-P 2 -r
EXPECT=AA
RUN

NAME=rz-gg -a x86 -b 32 -p A200 -d 50:0xccccccb
TOOL=rz-gg
ARGS=-a x86 -b 32 -p A200 -d 50:0xccccccb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cbcccc0c4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -a x86 -b 32 -p A200 -d 50:0xcb
TOOL=rz-gg
ARGS=-a x86 -b 32 -p A200 -d 50:0xcb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cb0000004141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -a x86 -b 32 -p A10 -d 50:0xcb
TOOL=rz-gg
ARGS=-a x86 -b 32 -p A10 -d 50:0xcb
EXPECT=<<EOF
41414141414141414141
EOF
EXPECT_ERR=<<EOF
ERROR: egg: cannot patch outside
EOF
RUN

NAME=rz-gg -a x86 -b 32 -p A20 -w 10:cb
TOOL=rz-gg
ARGS=-a x86 -b 32 -p A20 -w 10:cb
EXPECT=<<EOF
41414141414141414141cb414141414141414141
EOF
RUN

NAME=rz-gg -a x86 -b 32 -p A20 -D 10:33
TOOL=rz-gg
ARGS=-a x86 -b 32 -p A20 -D 10:33
EXPECT=<<EOF
4141414141414141414121000000000000004141
EOF
RUN

NAME=rz-gg -a x86 -b 32 -p n2t2a2s2
TOOL=rz-gg
ARGS=-a x86 -b 32 -p n2t2a2s2
EXPECT=<<EOF
00004141cccc9090
EOF
RUN

NAME=rz-gg -i exec -z -a x86 -b64
TOOL=rz-gg
ARGS=-i exec -z -k linux -a x86 -b64
EXPECT=<<EOF
"\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"
EOF
RUN

NAME=rz-gg -k linux -i exec -a x86 -b64 -p n3N3
TOOL=rz-gg
ARGS=-k linux -i exec -a x86 -b64 -p n3N3
EXPECT=<<EOF
90909031c048bbd19d9691d08c97ff48f7db53545f995257545eb03b0f05909090
EOF
RUN

NAME=rz-gg -k linux -a x86 -b64 simple_cmp.r
TOOL=rz-gg
ARGS=-k linux -a x86 -b64 bins/other/rz-gg/simple_cmp.r
EXPECT=<<EOF
554889e54881ec80000000c745106869210ac7451400000000c7451800000000488d45104889850800000048c7c70000000048c7c7010000004889bd0900000048c7c70000000048c7c7020000004889bd0a000000488b45085058483b450a7f3248c7c00400000050488b45085048c7c00100000050488b3c24488b742408488b54241048c7c0040000000f054883c418eb2248c7c00000000050488b3c2448c7c0010000000f054883c4084881c4800000005dc3ebdc
EOF
RUN

NAME=rz-gg -k linux -a x86 -b 64 bins/other/rz-gg/hi.c
BROKEN=1 # output depends on host C compiler/version
TOOL=rz-gg
ARGS=-a x86 -b 64 bins/other/rz-gg/hi.c
REGEXP_FILTER_OUT=e9.+
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -a arm -b 32 -p A200 -d 50:0xccccccb
TOOL=rz-gg
ARGS=-a arm -b 32 -p A200 -d 50:0xccccccb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cbcccc0c4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -a arm -b 32 -p A200 -d 50:0xcb
TOOL=rz-gg
ARGS=-a arm -b 32 -p A200 -d 50:0xcb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cb0000004141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -a arm -b 32 -p A10 -d 50:0xcb
TOOL=rz-gg
ARGS=-a arm -b 32 -p A10 -d 50:0xcb
EXPECT=<<EOF
41414141414141414141
EOF
EXPECT_ERR=<<EOF
ERROR: egg: cannot patch outside
EOF
RUN

NAME=rz-gg -a arm -b 32 -p A20 -w 10:cb
TOOL=rz-gg
ARGS=-a arm -b 32 -p A20 -w 10:cb
EXPECT=<<EOF
41414141414141414141cb414141414141414141
EOF
RUN

NAME=rz-gg -a arm -b 32 -p A20 -D 10:33
TOOL=rz-gg
ARGS=-a arm -b 32 -p A20 -D 10:33
EXPECT=<<EOF
4141414141414141414121000000000000004141
EOF
RUN

NAME=rz-gg -a arm -b 32 -p n2t2a2s2
TOOL=rz-gg
ARGS=-a arm -b 32 -p n2t2a2s2
EXPECT=<<EOF
00004141cccc9090
EOF
RUN

NAME=rz-gg -i exec -z -a arm -b 32
TOOL=rz-gg
ARGS=-i exec -z -k linux -a arm -b 32
EXPECT=<<EOF
"\x02\x20\x42\xe0\x1c\x30\x8f\xe2\x04\x30\x8d\xe5\x08\x20\x8d\xe5\x13\x02\xa0\xe1\x07\x20\xc3\xe5\x04\x30\x8f\xe2\x04\x10\x8d\xe2\x01\x20\xc3\xe5\x0b\x0b\x90\xef\x2f\x62\x69\x6e\x2f\x73\x68"
EOF
RUN

NAME=rz-gg -k linux -i exec -a arm -b 32 -p n3N3
TOOL=rz-gg
ARGS=-k linux -i exec -a arm -b 32 -p n3N3
EXPECT=<<EOF
909090022042e01c308fe204308de508208de51302a0e10720c3e504308fe204108de20120c3e50b0b90ef2f62696e2f7368909090
EOF
RUN

NAME=rz-gg -k linux -a arm -b 32 simple_cmp.r
TOOL=rz-gg
ARGS=-k linux -a arm -b 32 bins/other/rz-gg/simple_cmp.r
EXPECT=<<EOF
00482de904b08de280d04de204f08fe26869210a0000000000000000000000000010004fe207008de50010a0e30110a0e308d0a0e30010a0e30210a0e309d0a0e30000bde809005de3090000ca0400a0e30c008de50100a0e314008de508109de50c209de514309de50470a0e3000000ef060000ea0000a0e30c008de508109de50170a0e3000000ef80d08be20088bde8f7ffffea
EOF
RUN

NAME=rz-gg -k linux -a arm -b 32 bins/other/rz-gg/hi.c
BROKEN=1 # output depends on host C compiler/version
TOOL=rz-gg
ARGS=-a arm -b 32 bins/other/rz-gg/hi.c
REGEXP_FILTER_OUT=e9.+
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -a arm -b 64 -p A200 -d 50:0xccccccb
TOOL=rz-gg
ARGS=-a arm -b 64 -p A200 -d 50:0xccccccb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cbcccc0c4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -a arm -b 64 -p A200 -d 50:0xcb
TOOL=rz-gg
ARGS=-a arm -b 64 -p A200 -d 50:0xcb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cb0000004141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -a arm -b 64 -p A10 -d 50:0xcb
TOOL=rz-gg
ARGS=-a arm -b 64 -p A10 -d 50:0xcb
EXPECT=<<EOF
41414141414141414141
EOF
EXPECT_ERR=<<EOF
ERROR: egg: cannot patch outside
EOF
RUN

NAME=rz-gg -a arm -b 64 -p A20 -w 10:cb
TOOL=rz-gg
ARGS=-a arm -b 64 -p A20 -w 10:cb
EXPECT=<<EOF
41414141414141414141cb414141414141414141
EOF
RUN

NAME=rz-gg -a arm -b 64 -p A20 -D 10:33
TOOL=rz-gg
ARGS=-a arm -b 64 -p A20 -D 10:33
EXPECT=<<EOF
4141414141414141414121000000000000004141
EOF
RUN

NAME=rz-gg -a arm -b 64 -p n2t2a2s2
TOOL=rz-gg
ARGS=-a arm -b 64 -p n2t2a2s2
EXPECT=<<EOF
00004141cccc9090
EOF
RUN

NAME=rz-gg -i exec -z -a arm -b 64
BROKEN=1 # RzEgg exec encoder has no arm64 shellcode
TOOL=rz-gg
ARGS=-i exec -z -k linux -a arm -b 64
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -k linux -i exec -a arm -b 64 -p n3N3
BROKEN=1 # RzEgg exec encoder has no arm64 shellcode
TOOL=rz-gg
ARGS=-k linux -i exec -a arm -b 64 -p n3N3
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -k linux -a arm -b 64 simple_cmp.r
BROKEN=1 # RzEgg has no AArch64 backend: emits AArch32 (push {fp,lr})
TOOL=rz-gg
ARGS=-k linux -a arm -b 64 bins/other/rz-gg/simple_cmp.r
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -k linux -a arm -b 64 bins/other/rz-gg/hi.c
BROKEN=1 # no AArch64 egg backend; also compiler-dependent
TOOL=rz-gg
ARGS=-a arm -b 64 bins/other/rz-gg/hi.c
REGEXP_FILTER_OUT=e9.+
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 -p A200 -d 50:0xccccccb
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 32 -p A200 -d 50:0xccccccb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cbcccc0c4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 -p A200 -d 50:0xcb
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 32 -p A200 -d 50:0xcb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cb0000004141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 -p A10 -d 50:0xcb
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 32 -p A10 -d 50:0xcb
EXPECT=<<EOF
41414141414141414141
EOF
EXPECT_ERR=<<EOF
ERROR: egg: cannot patch outside
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 -p A20 -w 10:cb
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 32 -p A20 -w 10:cb
EXPECT=<<EOF
41414141414141414141cb414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 -p A20 -D 10:33
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 32 -p A20 -D 10:33
EXPECT=<<EOF
4141414141414141414121000000000000004141
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 -p n2t2a2s2
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 32 -p n2t2a2s2
EXPECT=<<EOF
00004141cccc9090
EOF
RUN

NAME=rz-gg -i exec -z -k darwin -a x86 -b 32
TOOL=rz-gg
ARGS=-i exec -z -k linux -k darwin -a x86 -b 32
EXPECT=<<EOF
"\x41\xb0\x02\x49\xc1\xe0\x18\x49\x83\xc8\x17\xeb\x12\x5f\x49\x83\xc0\x24\x4c\x89\xc0\x48\x31\xd2\x52\x57\x48\x89\xe6\x0f\x05\xe8\xe9\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68"
EOF
RUN

NAME=rz-gg -i exec -k darwin -a x86 -b 32 -p n3N3
TOOL=rz-gg
ARGS=-i exec -k darwin -a x86 -b 32 -p n3N3
EXPECT=<<EOF
90909041b00249c1e0184983c817eb125f4983c0244c89c04831d252574889e60f05e8e9ffffff2f62696e2f7368909090
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 simple_cmp.r
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 32 bins/other/rz-gg/simple_cmp.r
EXPECT=<<EOF
5589e581ec80000000c745086869210ac7450c00000000c74510000000008d4508898504000000bb00000000bb01000000899d05000000bb00000000bb02000000899d06000000ff7504583b45067f226a04ff75046a018b1c248b4c24048b542408b80400000050cd8083c40483c40ceb1b6a008b1c24b80100000050cd8083c40483c40481c4800000005dc3ebe3
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 simple_cmp.r
FILE==
CMDS=<<EOF
!rz-gg -k darwin -a x86 -b 32 -o /dev/null bins/other/rz-gg/simple_cmp.r
%v $?
EOF
EXPECT=<<EOF
0x0
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 32 bins/other/rz-gg/hi.c
BROKEN=1 # output depends on host C compiler/version
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 32 bins/other/rz-gg/hi.c
REGEXP_FILTER_OUT=e9.+
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 64 -p A200 -d 50:0xccccccb
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 64 -p A200 -d 50:0xccccccb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cbcccc0c4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 64 -p A200 -d 50:0xcb
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 64 -p A200 -d 50:0xcb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cb0000004141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 64 -p A10 -d 50:0xcb
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 64 -p A10 -d 50:0xcb
EXPECT=<<EOF
41414141414141414141
EOF
EXPECT_ERR=<<EOF
ERROR: egg: cannot patch outside
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 64 -p A20 -w 10:cb
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 64 -p A20 -w 10:cb
EXPECT=<<EOF
41414141414141414141cb414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 64 -p A20 -D 10:33
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 64 -p A20 -D 10:33
EXPECT=<<EOF
4141414141414141414121000000000000004141
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 64 -p n2t2a2s2
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 64 -p n2t2a2s2
EXPECT=<<EOF
00004141cccc9090
EOF
RUN

NAME=rz-gg -i exec -z -k darwin -a x86 -b 64
TOOL=rz-gg
ARGS=-i exec -z -k darwin -a x86 -b 64
EXPECT=<<EOF
"\x41\xb0\x02\x49\xc1\xe0\x18\x49\x83\xc8\x17\xeb\x12\x5f\x49\x83\xc0\x24\x4c\x89\xc0\x48\x31\xd2\x52\x57\x48\x89\xe6\x0f\x05\xe8\xe9\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68"
EOF
RUN

NAME=rz-gg -k linux -i exec -a x86 -b 64 -p n3N3
TOOL=rz-gg
ARGS=-k linux -i exec -a x86 -b 64 -p n3N3
EXPECT=<<EOF
90909031c048bbd19d9691d08c97ff48f7db53545f995257545eb03b0f05909090
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 64 simple_cmp.r
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 64 bins/other/rz-gg/simple_cmp.r
EXPECT=<<EOF
554889e54881ec80000000c745106869210ac7451400000000c7451800000000488d45104889850800000048c7c70000000048c7c7010000004889bd0900000048c7c70000000048c7c7020000004889bd0a000000488b45085058483b450a7f3248c7c00400000050488b45085048c7c00100000050488b3c24488b742408488b54241048c7c0040000000f054883c418eb2248c7c00000000050488b3c2448c7c0010000000f054883c4084881c4800000005dc3ebdc
EOF
RUN

NAME=rz-gg -k darwin -a x86 -b 64 bins/other/rz-gg/hi.c
BROKEN=1 # output depends on host C compiler/version
TOOL=rz-gg
ARGS=-k darwin -a x86 -b 64 bins/other/rz-gg/hi.c
REGEXP_FILTER_OUT=e9.+
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -k darwin -a arm -b 64 -p A200 -d 50:0xccccccb
TOOL=rz-gg
ARGS=-k darwin -a arm -b 64 -p A200 -d 50:0xccccccb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cbcccc0c4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a arm -b 64 -p A200 -d 50:0xcb
TOOL=rz-gg
ARGS=-k darwin -a arm -b 64 -p A200 -d 50:0xcb
EXPECT=<<EOF
4141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141cb0000004141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a arm -b 64 -p A10 -d 50:0xcb
TOOL=rz-gg
ARGS=-k darwin -a arm -b 64 -p A10 -d 50:0xcb
EXPECT=<<EOF
41414141414141414141
EOF
EXPECT_ERR=<<EOF
ERROR: egg: cannot patch outside
EOF
RUN

NAME=rz-gg -k darwin -a arm -b 64 -p A20 -w 10:cb
TOOL=rz-gg
ARGS=-k darwin -a arm -b 64 -p A20 -w 10:cb
EXPECT=<<EOF
41414141414141414141cb414141414141414141
EOF
RUN

NAME=rz-gg -k darwin -a arm -b 64 -p A20 -D 10:33
TOOL=rz-gg
ARGS=-k darwin -a arm -b 64 -p A20 -D 10:33
EXPECT=<<EOF
4141414141414141414121000000000000004141
EOF
RUN

NAME=rz-gg -k darwin -a arm -b 64 -p n2t2a2s2
TOOL=rz-gg
ARGS=-k darwin -a arm -b 64 -p n2t2a2s2
EXPECT=<<EOF
00004141cccc9090
EOF
RUN

NAME=rz-gg -i exec -z -k darwin -a arm -b 64
BROKEN=1 # RzEgg exec encoder has no arm64 shellcode
TOOL=rz-gg
ARGS=-i exec -z -k darwin -a arm -b 64
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -i exec -k darwin -a arm -b 64 -p n3N3
BROKEN=1 # RzEgg exec encoder has no arm64 shellcode
TOOL=rz-gg
ARGS=-i exec -k darwin -a arm -b 64 -p n3N3
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -k darwin -a arm -b 64 simple_cmp.r
BROKEN=1 # RzEgg has no AArch64 backend: emits AArch32 (push {fp,lr})
TOOL=rz-gg
ARGS=-k darwin -a arm -b 64 bins/other/rz-gg/simple_cmp.r
EXPECT=<<EOF
???
EOF
RUN

NAME=rz-gg -k darwin -a arm -b 64 bins/other/rz-gg/hi.c
BROKEN=1 # no AArch64 egg backend; also compiler-dependent
TOOL=rz-gg
ARGS=-k darwin -a arm -b 64 bins/other/rz-gg/hi.c
REGEXP_FILTER_OUT=e9.+
EXPECT=<<EOF
???
EOF
RUN