Uplift Hexagon architecture to RzIL The general structure is, that every (sub-)instruction has a getter for it's RzIL code. Calling the getter will return the RzIL operation. If RzIL for an instruction is requested, the plugin makes a decision. Because Hexagon only executes whole instruction packets. If the instruction is not the last instruction in a packet, it will simply return `EMPTY()`. If the RzIL for the last instruction in a packet is requested, it will get the RzIL operations for all instructions in the packet, shuffles them into the correct execution order (according to some rules) and returns the complete operation for the packet. The RzIL code was entirely generated with the [rzil-compiler](https://github.com/Rot127/rzil-compiler/), using the semantic definition of the [QEMU Hexagon module](https://github.com/qemu/qemu/tree/master/target/hexagon). Currently successful compile instructions (and tested): ``` [*] 1581/1733 standard instructions compiled. [*] 431/643 HVX instructions compiled. [*] In total: 2012/2376 instructions compiled. ``` It was tested with: - (Semantic tests) `rz-tracetest` against the execution trace of the QEMU Hexagon test binaries. - (Bug free and semi-semtantic test) Adding tests which simply execute the test binaries to ensure leak and segfault free execution. Also it is executed until a certain instruction is reached (end of `main` or `loc.pass` symbol), partially testing it executes correctly. For the uplifting several changes and modernization had to be made: - Enhance consistency of decoding - Allow to disassemble an instruction without copying the result. This is used if the given buffer of instruction bytes is larger than one instruction width. In this case, as many instructions as the buffer can hold are disassembled and buffered for later. - Generally enhance buffering of instructions. - Allow to mark a packet as valid before it is completely decoded (in case we know it must be valid, e.g. if it is a jump target of a valid packet). - Fix (hopefully) all memory leaks of the Hexagon plugin. - Changes to register getters, because RzIL needs finer control to translate alias or explicit register names to their real register. - Getter for register name is now done by table, so for future distinction between DSP version we can just select another table. - Translation functions from register alias or explicit name to their real register. - Each operand contains now it's variable ID (e.g. `d` for register `Rd`) as in the ISA (for mapping in the RzIL code). - Ease debugging by tracking in more precision, if an instruction is added to a stale, active or new packet. - Add registers `C20` - `C29` (not yet present in LLVM) - Some renaming to make the code more readable.
555 lines
34 KiB
Text
555 lines
34 KiB
Text
NAME=Print the parser plugins
|
|
FILE==
|
|
CMDS=Lp
|
|
EXPECT=<<EOF
|
|
6502.pseudo
|
|
arm.pseudo
|
|
avr.pseudo
|
|
chip8.pseudo
|
|
dalvik.pseudo
|
|
m68k.pseudo
|
|
mips.pseudo
|
|
ppc.pseudo
|
|
sh.pseudo
|
|
tms320.pseudo
|
|
v850.pseudo
|
|
wasm.pseudo
|
|
x86.pseudo
|
|
riscv.pseudo
|
|
z80.pseudo
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the parser plugins in JSON
|
|
FILE==
|
|
CMDS=Lpj
|
|
EXPECT=<<EOF
|
|
[{"name":"6502.pseudo"},{"name":"arm.pseudo"},{"name":"avr.pseudo"},{"name":"chip8.pseudo"},{"name":"dalvik.pseudo"},{"name":"m68k.pseudo"},{"name":"mips.pseudo"},{"name":"ppc.pseudo"},{"name":"sh.pseudo"},{"name":"tms320.pseudo"},{"name":"v850.pseudo"},{"name":"wasm.pseudo"},{"name":"x86.pseudo"},{"name":"riscv.pseudo"},{"name":"z80.pseudo"}]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the core plugins
|
|
FILE==
|
|
CMDS=Lc
|
|
EXPECT=<<EOF
|
|
java: Suite of java commands, type `java` for more info (Made by deroad, v1.0, LGPL-3.0-only)
|
|
dex: Suite of dex commands, type `dex` for more info (Made by deroad, v1.0, LGPL-3.0-only)
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the core plugins in JSON
|
|
FILE==
|
|
CMDS=Lcj
|
|
EXPECT=<<EOF
|
|
[{"name":"java","description":"Suite of java commands, type `java` for more info","author":"deroad","version":"1.0","license":"LGPL-3.0-only"},{"name":"dex","description":"Suite of dex commands, type `dex` for more info","author":"deroad","version":"1.0","license":"LGPL-3.0-only"}]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the io plugins
|
|
FILE==
|
|
BROKEN=1
|
|
CMDS=Lo
|
|
EXPECT=<<EOF
|
|
rw_ ar Open ar/lib files (LGPL3) ar://,lib://
|
|
rw_ fd Local process filedescriptor IO (MIT) fd://
|
|
rw_ bfdbg Attach to brainfuck Debugger instance (LGPL3) bfdbg://
|
|
rwd bochs Attach to a BOCHS debugger instance (LGPL3) bochs://
|
|
r_d debug Attach to native debugger instance (LGPL3) dbg://,pidof://,waitfor:// v0.2.0 pancake
|
|
rw_ default Open local files (LGPL3) file://,nocache://
|
|
rwd gdb Attach to gdbserver instance (LGPL3) gdb://
|
|
rw_ gzip Read/write gzipped files (LGPL3) gzip://
|
|
rw_ http Make http get requests (LGPL3) http://
|
|
rw_ ihex Open intel HEX file (LGPL) ihex://
|
|
r__ mach mach debug io (unsupported in this platform) (LGPL)
|
|
rw_ malloc Memory allocation plugin (LGPL3) malloc://,hex://
|
|
rw_ null Null plugin (LGPL3) null://
|
|
rw_ procpid Open /proc/[pid]/mem io (LGPL3) procpid://
|
|
rwd ptrace Ptrace and /proc/pid/mem (if available) io plugin (LGPL3) ptrace://,attach://
|
|
rwd qnx Attach to QNX pdebug instance (LGPL3) qnx://
|
|
rw_ rzpipe rzpipe io plugin (MIT) rzpipe://
|
|
rw_ rzweb rzweb io client plugin (LGPL3) rzweb://
|
|
rw_ rap Remote binary protocol plugin (MIT) rap://,raps://
|
|
rw_ self Read memory from self (LGPL3) self://
|
|
rw_ shm Shared memory resources plugin (MIT) shm://
|
|
rw_ sparse Sparse buffer allocation plugin (LGPL3) sparse://
|
|
rw_ tcp Load files via TCP (listen or connect) (LGPL3) tcp://
|
|
rwd winkd Attach to a KD debugger (LGPL3) winkd://
|
|
rwd winedbg Wine-dbg io and debug.io plugin (MIT) winedbg://
|
|
rw_ zip Open zip files (BSD) zip://,apk://,ipa://,jar://,zipall://,apkall://,ipaall://,jarall://
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the io plugins in JSON
|
|
FILE==
|
|
BROKEN=1
|
|
CMDS=Loj
|
|
EXPECT=<<EOF
|
|
[{"permissions":"rw_","name":"ar","description":"Open ar/lib files","license":"LGPL3","uris":["ar://","lib://"]},{"permissions":"rw_","name":"fd","description":"Local process filedescriptor IO","license":"MIT","uris":["fd://"]},{"permissions":"rw_","name":"bfdbg","description":"Attach to brainfuck Debugger instance","license":"LGPL3","uris":["bfdbg://"]},{"permissions":"rwd","name":"bochs","description":"Attach to a BOCHS debugger instance","license":"LGPL3","uris":["bochs://"]},{"permissions":"r_d","name":"debug","description":"Attach to native debugger instance","license":"LGPL3","uris":["dbg://","pidof://","waitfor://"],"version":"0.2.0","author":"pancake"},{"permissions":"rw_","name":"default","description":"Open local files","license":"LGPL3","uris":["file://","nocache://"]},{"permissions":"rwd","name":"gdb","description":"Attach to gdbserver instance","license":"LGPL3","uris":["gdb://"]},{"permissions":"rw_","name":"gzip","description":"Read/write gzipped files","license":"LGPL3","uris":["gzip://"]},{"permissions":"rw_","name":"http","description":"Make http get requests","license":"LGPL3","uris":["http://"]},{"permissions":"rw_","name":"ihex","description":"Open intel HEX file","license":"LGPL","uris":["ihex://"]},{"permissions":"r__","name":"mach","description":"mach debug io (unsupported in this platform)","license":"LGPL"},{"permissions":"rw_","name":"malloc","description":"Memory allocation plugin","license":"LGPL3","uris":["malloc://","hex://"]},{"permissions":"rw_","name":"null","description":"Null plugin","license":"LGPL3","uris":["null://"]},{"permissions":"rw_","name":"procpid","description":"Open /proc/[pid]/mem io","license":"LGPL3","uris":["procpid://"]},{"permissions":"rwd","name":"ptrace","description":"Ptrace and /proc/pid/mem (if available) io plugin","license":"LGPL3","uris":["ptrace://","attach://"]},{"permissions":"rwd","name":"qnx","description":"Attach to QNX pdebug instance","license":"LGPL3","uris":["qnx://"]},{"permissions":"rw_","name":"rzpipe","description":"rzpipe io plugin","license":"MIT","uris":["rzpipe://"]},{"permissions":"rw_","name":"rzweb","description":"rzweb io client plugin","license":"LGPL3","uris":["rzweb://"]},{"permissions":"rw_","name":"rap","description":"Remote binary protocol plugin","license":"MIT","uris":["rap://","raps://"]},{"permissions":"rw_","name":"self","description":"Read memory from self","license":"LGPL3","uris":["self://"]},{"permissions":"rw_","name":"shm","description":"Shared memory resources plugin","license":"MIT","uris":["shm://"]},{"permissions":"rw_","name":"sparse","description":"Sparse buffer allocation plugin","license":"LGPL3","uris":["sparse://"]},{"permissions":"rw_","name":"tcp","description":"Load files via TCP (listen or connect)","license":"LGPL3","uris":["tcp://"]},{"permissions":"rwd","name":"winkd","description":"Attach to a KD debugger","license":"LGPL3","uris":["winkd://"]},{"permissions":"rwd","name":"winedbg","description":"Wine-dbg io and debug.io plugin","license":"MIT","uris":["winedbg://"]},{"permissions":"rw_","name":"zip","description":"Open zip files","license":"BSD","uris":["zip://","apk://","ipa://","jar://","zipall://","apkall://","ipaall://","jarall://"]}]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the bin plugins
|
|
FILE==
|
|
CMDS=Li
|
|
EXPECT=<<EOF
|
|
bin any Dummy format rz_bin plugin (LGPL3)
|
|
bin art Android Runtime (LGPL3)
|
|
bin avr ATmel AVR MCUs (LGPL3)
|
|
bin bf brainfuck (LGPL3)
|
|
bin bflt bFLT uClinux executable (LGPL3)
|
|
bin bios BIOS bin plugin (LGPL)
|
|
bin bootimg Android Boot Image (LGPL3)
|
|
bin cgc CGC format rz_bin plugin (LGPL3)
|
|
bin coff COFF format rz_bin plugin (LGPL3)
|
|
bin dex dex bin plugin (LGPL3)
|
|
bin dmp64 Windows Crash Dump x64 rz_bin plugin (LGPL3)
|
|
bin dol Nintendo Dolphin binary format (BSD)
|
|
bin dyldcache dyldcache bin plugin (LGPL3)
|
|
bin elf ELF format plugin (LGPL3)
|
|
bin elf64 elf64 bin plugin (LGPL3)
|
|
bin java java bin plugin (LGPL3)
|
|
bin le LE/LX format plugin (LGPL3) GustavoLCR
|
|
bin luac LUA Compiled File (LGPL3)
|
|
bin mach0 mach0 bin plugin (LGPL3)
|
|
bin mach064 mach064 bin plugin (LGPL3)
|
|
bin mbn MBN/SBL bootloader things (LGPL3)
|
|
bin mdmp Windows MiniDump plugin (LGPL3)
|
|
bin menuet Menuet/KolibriOS bin plugin (LGPL3)
|
|
bin mz MZ bin plugin (MIT)
|
|
bin ne NE format plugin (LGPL3) GustavoLCR
|
|
bin nes NES (MIT)
|
|
bin nin3ds Nintendo 3DS Firmware plugin (LGPL3)
|
|
bin ninds Nintendo DS plugin (LGPL3)
|
|
bin ningb Nintendo Gameboy plugin (LGPL3)
|
|
bin ningba Nintendo Gameboy Advance plugin (LGPL3)
|
|
bin nro Nintendo Switch NRO0 binaries (MIT)
|
|
bin nso Nintendo Switch NSO0 binaries (MIT)
|
|
bin omf omf bin plugin (LGPL3)
|
|
bin qnx QNX executable file support (LGPL3) deepakchethan
|
|
bin p9 Plan9 bin plugin (LGPL3)
|
|
bin pe PE bin plugin (LGPL3)
|
|
bin pe64 PE64 (PE32+) bin plugin (LGPL3)
|
|
bin pebble Pebble Watch App (LGPL)
|
|
bin prg C64 PRG (LGPL3)
|
|
bin psxexe Sony PlayStation 1 Executable (LGPL3)
|
|
bin pyc Python byte-compiled file plugin (LGPL3)
|
|
bin sfc Super NES / Super Famicom ROM file (LGPL3)
|
|
bin smd SEGA Genesis/Megadrive (LGPL3)
|
|
bin sms SEGA MasterSystem/GameGear (LGPL3)
|
|
bin spc700 SNES-SPC700 Sound File Data (LGPL3)
|
|
bin symbols Apple Symbols file (MIT)
|
|
bin te TE bin plugin (LGPL3)
|
|
bin vsf VICE Snapshot File (LGPL3)
|
|
bin wasm WebAssembly bin plugin (MIT)
|
|
bin xbe Microsoft Xbox XBE plugin (LGPL3)
|
|
bin kernelcache kernelcache bin plugin (LGPL3)
|
|
bin z64 Nintendo 64 Bin-BE plugin (LGPL3)
|
|
bin zimg zimg format bin plugin (LGPL3)
|
|
xtr .fatmach0 fat mach0 bin extractor plugin (LGPL3)
|
|
xtr .sep64 64-bit SEP bin extractor plugin (LGPL3)
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the bin plugins in quiet mode
|
|
FILE==
|
|
CMDS=Liq
|
|
EXPECT=<<EOF
|
|
any
|
|
art
|
|
avr
|
|
bf
|
|
bflt
|
|
bios
|
|
bootimg
|
|
cgc
|
|
coff
|
|
dex
|
|
dmp64
|
|
dol
|
|
dyldcache
|
|
elf
|
|
elf64
|
|
java
|
|
le
|
|
luac
|
|
mach0
|
|
mach064
|
|
mbn
|
|
mdmp
|
|
menuet
|
|
mz
|
|
ne
|
|
nes
|
|
nin3ds
|
|
ninds
|
|
ningb
|
|
ningba
|
|
nro
|
|
nso
|
|
omf
|
|
qnx
|
|
p9
|
|
pe
|
|
pe64
|
|
pebble
|
|
prg
|
|
psxexe
|
|
pyc
|
|
sfc
|
|
smd
|
|
sms
|
|
spc700
|
|
symbols
|
|
te
|
|
vsf
|
|
wasm
|
|
xbe
|
|
kernelcache
|
|
z64
|
|
zimg
|
|
xtr.fatmach0
|
|
xtr.sep64
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the bin plugins in JSON
|
|
FILE==
|
|
CMDS=Lij
|
|
EXPECT=<<EOF
|
|
[{"name":"any","description":"Dummy format rz_bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"art","description":"Android Runtime","license":"LGPL3","author":"LGPL3"},{"name":"avr","description":"ATmel AVR MCUs","license":"LGPL3","author":"LGPL3"},{"name":"bf","description":"brainfuck","license":"LGPL3","author":"LGPL3"},{"name":"bflt","description":"bFLT uClinux executable","license":"LGPL3","author":"LGPL3"},{"name":"bios","description":"BIOS bin plugin","license":"LGPL","author":"LGPL"},{"name":"bootimg","description":"Android Boot Image","license":"LGPL3","author":"LGPL3"},{"name":"cgc","description":"CGC format rz_bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"coff","description":"COFF format rz_bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"dex","description":"dex bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"dmp64","description":"Windows Crash Dump x64 rz_bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"dol","description":"Nintendo Dolphin binary format","license":"BSD","author":"BSD"},{"name":"dyldcache","description":"dyldcache bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"elf","description":"ELF format plugin","license":"LGPL3","author":"LGPL3"},{"name":"elf64","description":"elf64 bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"java","description":"java bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"le","description":"LE/LX format plugin","license":"LGPL3","author":"LGPL3"},{"name":"luac","description":"LUA Compiled File","license":"LGPL3","author":"LGPL3"},{"name":"mach0","description":"mach0 bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"mach064","description":"mach064 bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"mbn","description":"MBN/SBL bootloader things","license":"LGPL3","author":"LGPL3"},{"name":"mdmp","description":"Windows MiniDump plugin","license":"LGPL3","author":"LGPL3"},{"name":"menuet","description":"Menuet/KolibriOS bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"mz","description":"MZ bin plugin","license":"MIT","author":"MIT"},{"name":"ne","description":"NE format plugin","license":"LGPL3","author":"LGPL3"},{"name":"nes","description":"NES","license":"MIT","author":"MIT"},{"name":"nin3ds","description":"Nintendo 3DS Firmware plugin","license":"LGPL3","author":"LGPL3"},{"name":"ninds","description":"Nintendo DS plugin","license":"LGPL3","author":"LGPL3"},{"name":"ningb","description":"Nintendo Gameboy plugin","license":"LGPL3","author":"LGPL3"},{"name":"ningba","description":"Nintendo Gameboy Advance plugin","license":"LGPL3","author":"LGPL3"},{"name":"nro","description":"Nintendo Switch NRO0 binaries","license":"MIT","author":"MIT"},{"name":"nso","description":"Nintendo Switch NSO0 binaries","license":"MIT","author":"MIT"},{"name":"omf","description":"omf bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"qnx","description":"QNX executable file support","license":"LGPL3","author":"LGPL3"},{"name":"p9","description":"Plan9 bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"pe","description":"PE bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"pe64","description":"PE64 (PE32+) bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"pebble","description":"Pebble Watch App","license":"LGPL","author":"LGPL"},{"name":"prg","description":"C64 PRG","license":"LGPL3","author":"LGPL3"},{"name":"psxexe","description":"Sony PlayStation 1 Executable","license":"LGPL3","author":"LGPL3"},{"name":"pyc","description":"Python byte-compiled file plugin","license":"LGPL3","author":"LGPL3"},{"name":"sfc","description":"Super NES / Super Famicom ROM file","license":"LGPL3","author":"LGPL3"},{"name":"smd","description":"SEGA Genesis/Megadrive","license":"LGPL3","author":"LGPL3"},{"name":"sms","description":"SEGA MasterSystem/GameGear","license":"LGPL3","author":"LGPL3"},{"name":"spc700","description":"SNES-SPC700 Sound File Data","license":"LGPL3","author":"LGPL3"},{"name":"symbols","description":"Apple Symbols file","license":"MIT","author":"MIT"},{"name":"te","description":"TE bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"vsf","description":"VICE Snapshot File","license":"LGPL3","author":"LGPL3"},{"name":"wasm","description":"WebAssembly bin plugin","license":"MIT","author":"MIT"},{"name":"xbe","description":"Microsoft Xbox XBE plugin","license":"LGPL3","author":"LGPL3"},{"name":"kernelcache","description":"kernelcache bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"z64","description":"Nintendo 64 Bin-BE plugin","license":"LGPL3","author":"LGPL3"},{"name":"zimg","description":"zimg format bin plugin","license":"LGPL3","author":"LGPL3"},{"name":"xtr.fatmach0","description":"fat mach0 bin extractor plugin","license":"LGPL3"},{"name":"xtr.sep64","description":"64-bit SEP bin extractor plugin","license":"LGPL3"}]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the hash plugins
|
|
FILE==
|
|
CMDS=Lh
|
|
EXPECT=<<EOF
|
|
algorithm license author
|
|
md2 LGPL3 swedenspy
|
|
md4 LGPL3 deroad
|
|
md5 LGPL2 Alan DeKok
|
|
sha1 LGPL3 deroad
|
|
sha256 BSD-3 Aaron D. Gifford
|
|
sha384 BSD-3 Aaron D. Gifford
|
|
sha512 BSD-3 Aaron D. Gifford
|
|
sm3 LGPL2 FSF/deroad
|
|
blake3 CC0 Samuel Neves,Jack O'Connor
|
|
fletcher8 LGPL3 deroad
|
|
fletcher16 LGPL3 deroad
|
|
fletcher32 LGPL3 deroad
|
|
fletcher64 LGPL3 deroad
|
|
adler32 LGPL3 deroad
|
|
crc8smbus LGPL3 deroad
|
|
crc8cdma2000 LGPL3 deroad
|
|
crc8darc LGPL3 deroad
|
|
crc8dvbs2 LGPL3 deroad
|
|
crc8ebu LGPL3 deroad
|
|
crc8icode LGPL3 deroad
|
|
crc8itu LGPL3 deroad
|
|
crc8maxim LGPL3 deroad
|
|
crc8rohc LGPL3 deroad
|
|
crc8wcdma LGPL3 deroad
|
|
crc15can LGPL3 deroad
|
|
crc16 LGPL3 deroad
|
|
crc16citt LGPL3 deroad
|
|
crc16usb LGPL3 deroad
|
|
crc16hdlc LGPL3 deroad
|
|
crc16augccitt LGPL3 deroad
|
|
crc16buypass LGPL3 deroad
|
|
crc16cdma2000 LGPL3 deroad
|
|
crc16dds110 LGPL3 deroad
|
|
crc16dectr LGPL3 deroad
|
|
crc16dectx LGPL3 deroad
|
|
crc16dnp LGPL3 deroad
|
|
crc16en13757 LGPL3 deroad
|
|
crc16genibus LGPL3 deroad
|
|
crc16maxim LGPL3 deroad
|
|
crc16mcrf4xx LGPL3 deroad
|
|
crc16riello LGPL3 deroad
|
|
crc16t10dif LGPL3 deroad
|
|
crc16teledisk LGPL3 deroad
|
|
crc16tms37157 LGPL3 deroad
|
|
crca LGPL3 deroad
|
|
crc16kermit LGPL3 deroad
|
|
crc16modbus LGPL3 deroad
|
|
crc16x25 LGPL3 deroad
|
|
crc16xmodem LGPL3 deroad
|
|
crc24 LGPL3 deroad
|
|
crc32 LGPL3 deroad
|
|
crc32ecma267 LGPL3 deroad
|
|
crc32c LGPL3 deroad
|
|
crc32bzip2 LGPL3 deroad
|
|
crc32d LGPL3 deroad
|
|
crc32mpeg2 LGPL3 deroad
|
|
crc32posix LGPL3 deroad
|
|
crc32q LGPL3 deroad
|
|
crc32jamcrc LGPL3 deroad
|
|
crc32xfer LGPL3 deroad
|
|
crc64 LGPL3 deroad
|
|
crc64ecma182 LGPL3 deroad
|
|
crc64we LGPL3 deroad
|
|
crc64xz LGPL3 deroad
|
|
crc64iso LGPL3 deroad
|
|
xor8 LGPL3 deroad
|
|
xor16 LGPL3 deroad
|
|
xxhash32 LGPL3 deroad
|
|
ssdeep LGPL3 deroad
|
|
parity LGPL3 deroad
|
|
entropy LGPL3 deroad
|
|
entropy_fract LGPL3 deroad
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the hash plugins in JSON
|
|
FILE==
|
|
CMDS=Lhj
|
|
EXPECT=<<EOF
|
|
[{"name":"md2","license":"LGPL3","author":"swedenspy"},{"name":"md4","license":"LGPL3","author":"deroad"},{"name":"md5","license":"LGPL2","author":"Alan DeKok"},{"name":"sha1","license":"LGPL3","author":"deroad"},{"name":"sha256","license":"BSD-3","author":"Aaron D. Gifford"},{"name":"sha384","license":"BSD-3","author":"Aaron D. Gifford"},{"name":"sha512","license":"BSD-3","author":"Aaron D. Gifford"},{"name":"sm3","license":"LGPL2","author":"FSF/deroad"},{"name":"blake3","license":"CC0","author":"Samuel Neves,Jack O'Connor"},{"name":"fletcher8","license":"LGPL3","author":"deroad"},{"name":"fletcher16","license":"LGPL3","author":"deroad"},{"name":"fletcher32","license":"LGPL3","author":"deroad"},{"name":"fletcher64","license":"LGPL3","author":"deroad"},{"name":"adler32","license":"LGPL3","author":"deroad"},{"name":"crc8smbus","license":"LGPL3","author":"deroad"},{"name":"crc8cdma2000","license":"LGPL3","author":"deroad"},{"name":"crc8darc","license":"LGPL3","author":"deroad"},{"name":"crc8dvbs2","license":"LGPL3","author":"deroad"},{"name":"crc8ebu","license":"LGPL3","author":"deroad"},{"name":"crc8icode","license":"LGPL3","author":"deroad"},{"name":"crc8itu","license":"LGPL3","author":"deroad"},{"name":"crc8maxim","license":"LGPL3","author":"deroad"},{"name":"crc8rohc","license":"LGPL3","author":"deroad"},{"name":"crc8wcdma","license":"LGPL3","author":"deroad"},{"name":"crc15can","license":"LGPL3","author":"deroad"},{"name":"crc16","license":"LGPL3","author":"deroad"},{"name":"crc16citt","license":"LGPL3","author":"deroad"},{"name":"crc16usb","license":"LGPL3","author":"deroad"},{"name":"crc16hdlc","license":"LGPL3","author":"deroad"},{"name":"crc16augccitt","license":"LGPL3","author":"deroad"},{"name":"crc16buypass","license":"LGPL3","author":"deroad"},{"name":"crc16cdma2000","license":"LGPL3","author":"deroad"},{"name":"crc16dds110","license":"LGPL3","author":"deroad"},{"name":"crc16dectr","license":"LGPL3","author":"deroad"},{"name":"crc16dectx","license":"LGPL3","author":"deroad"},{"name":"crc16dnp","license":"LGPL3","author":"deroad"},{"name":"crc16en13757","license":"LGPL3","author":"deroad"},{"name":"crc16genibus","license":"LGPL3","author":"deroad"},{"name":"crc16maxim","license":"LGPL3","author":"deroad"},{"name":"crc16mcrf4xx","license":"LGPL3","author":"deroad"},{"name":"crc16riello","license":"LGPL3","author":"deroad"},{"name":"crc16t10dif","license":"LGPL3","author":"deroad"},{"name":"crc16teledisk","license":"LGPL3","author":"deroad"},{"name":"crc16tms37157","license":"LGPL3","author":"deroad"},{"name":"crca","license":"LGPL3","author":"deroad"},{"name":"crc16kermit","license":"LGPL3","author":"deroad"},{"name":"crc16modbus","license":"LGPL3","author":"deroad"},{"name":"crc16x25","license":"LGPL3","author":"deroad"},{"name":"crc16xmodem","license":"LGPL3","author":"deroad"},{"name":"crc24","license":"LGPL3","author":"deroad"},{"name":"crc32","license":"LGPL3","author":"deroad"},{"name":"crc32ecma267","license":"LGPL3","author":"deroad"},{"name":"crc32c","license":"LGPL3","author":"deroad"},{"name":"crc32bzip2","license":"LGPL3","author":"deroad"},{"name":"crc32d","license":"LGPL3","author":"deroad"},{"name":"crc32mpeg2","license":"LGPL3","author":"deroad"},{"name":"crc32posix","license":"LGPL3","author":"deroad"},{"name":"crc32q","license":"LGPL3","author":"deroad"},{"name":"crc32jamcrc","license":"LGPL3","author":"deroad"},{"name":"crc32xfer","license":"LGPL3","author":"deroad"},{"name":"crc64","license":"LGPL3","author":"deroad"},{"name":"crc64ecma182","license":"LGPL3","author":"deroad"},{"name":"crc64we","license":"LGPL3","author":"deroad"},{"name":"crc64xz","license":"LGPL3","author":"deroad"},{"name":"crc64iso","license":"LGPL3","author":"deroad"},{"name":"xor8","license":"LGPL3","author":"deroad"},{"name":"xor16","license":"LGPL3","author":"deroad"},{"name":"xxhash32","license":"LGPL3","author":"deroad"},{"name":"ssdeep","license":"LGPL3","author":"deroad"},{"name":"parity","license":"LGPL3","author":"deroad"},{"name":"entropy","license":"LGPL3","author":"deroad"},{"name":"entropy_fract","license":"LGPL3","author":"deroad"}]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the hash plugins in JSON
|
|
FILE==
|
|
CMDS=Lhq
|
|
EXPECT=<<EOF
|
|
md2 md4 md5 sha1 sha256 sha384 sha512 sm3 blake3 fletcher8 fletcher16 fletcher32 fletcher64 adler32 crc8smbus crc8cdma2000 crc8darc crc8dvbs2 crc8ebu crc8icode crc8itu crc8maxim crc8rohc crc8wcdma crc15can crc16 crc16citt crc16usb crc16hdlc crc16augccitt crc16buypass crc16cdma2000 crc16dds110 crc16dectr crc16dectx crc16dnp crc16en13757 crc16genibus crc16maxim crc16mcrf4xx crc16riello crc16t10dif crc16teledisk crc16tms37157 crca crc16kermit crc16modbus crc16x25 crc16xmodem crc24 crc32 crc32ecma267 crc32c crc32bzip2 crc32d crc32mpeg2 crc32posix crc32q crc32jamcrc crc32xfer crc64 crc64ecma182 crc64we crc64xz crc64iso xor8 xor16 xxhash32 ssdeep parity entropy entropy_fract
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Set the debug backend
|
|
FILE==
|
|
CMDS=<<EOF
|
|
Ld null
|
|
Ld~!windbg,native
|
|
EOF
|
|
EXPECT=<<EOF
|
|
0 --- bf LGPL3
|
|
1 --- bochs LGPL3
|
|
2 --- dmp LGPL3
|
|
3 --- gdb LGPL3
|
|
4 --- io MIT
|
|
5 dbg null MIT
|
|
6 --- rap LGPL3
|
|
7 --- winkd LGPL3
|
|
8 --- qnx LGPL3
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the debug plugins
|
|
FILE==
|
|
CMDS=Ld~!windbg,native
|
|
EXPECT=<<EOF
|
|
0 --- bf LGPL3
|
|
1 --- bochs LGPL3
|
|
2 --- dmp LGPL3
|
|
3 --- gdb LGPL3
|
|
4 --- io MIT
|
|
5 --- null MIT
|
|
6 --- rap LGPL3
|
|
7 --- winkd LGPL3
|
|
8 --- qnx LGPL3
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the debug plugins in JSON
|
|
FILE==
|
|
CMDS=<<EOF
|
|
Ldj~{[0]}
|
|
Ldj~{[1]}
|
|
Ldj~{[2]}
|
|
Ldj~{[3]}
|
|
Ldj~{[4]}
|
|
Ldj~{[5]}
|
|
Ldj~{[6]}
|
|
Ldj~{[7]}
|
|
Ldj~{[8]}
|
|
EOF
|
|
EXPECT=<<EOF
|
|
{"arch":"bf","name":"bf","license":"LGPL3"}
|
|
{"arch":"x86","name":"bochs","license":"LGPL3"}
|
|
{"arch":"x86,arm","name":"dmp","license":"LGPL3"}
|
|
{"arch":"x86,arm,sh,mips,avr,lm32,v850,ba2,tricore","name":"gdb","license":"LGPL3"}
|
|
{"arch":"any","name":"io","license":"MIT"}
|
|
{"arch":"any","name":"null","license":"MIT"}
|
|
{"arch":"any","name":"rap","license":"LGPL3"}
|
|
{"arch":"x86","name":"winkd","license":"LGPL3"}
|
|
{"arch":"x86,arm","name":"qnx","license":"LGPL3"}
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the asm/analysis plugins
|
|
FILE==
|
|
CMDS=La
|
|
EXPECT=<<EOF
|
|
_dAeI 8 16 6502 LGPL3 6502/NES/C64/Tamagotchi/T-1000 CPU
|
|
adAeI 8 8051 PD 8051 Intel CPU
|
|
_dA__ 32 amd29k LGPL3 AMD 29k RISC CPU (by deroad)
|
|
a____ 16 32 64 arm.as LGPL3 as ARM Assembler (use RZ_ARM32_AS and RZ_ARM64_AS environment) (by pancake)
|
|
adAeI 16 32 64 arm BSD Capstone ARM disassembler
|
|
adAeI 8 16 avr LGPL3 AVR Atmel
|
|
adA_I 16 32 64 bf LGPL3 Brainfuck (by pancake, nibble) v4.0.0
|
|
_dA__ 32 chip8 LGPL3 Chip8 disassembler
|
|
_dA__ 16 32 64 cil LGPL3 .NET Common Intermediate Language
|
|
_dA__ 16 cr16 LGPL3 cr16 disassembly plugin
|
|
adA__ 32 64 dalvik LGPL3 AndroidVM Dalvik
|
|
ad___ 16 dcpu16 PD Mojang's DCPU-16
|
|
_dA__ 32 64 ebc LGPL3 EFI Bytecode (by Fedor Sakharov)
|
|
adAeI 16 gb LGPL3 GameBoy(TM) (z80-like) (by condret)
|
|
_dAe_ 16 h8300 LGPL3 H8/300 disassembly plugin
|
|
_dA_I 32 hexagon LGPL3 Qualcomm Hexagon (QDSP6) V6 (by Rot127)
|
|
_dA__ 4 i4004 LGPL3 Intel 4004 microprocessor
|
|
_dA__ 8 i8080 BSD Intel 8080 CPU
|
|
adA__ 32 java LGPL-3 Java bytecode disassembler (by deroad)
|
|
_d___ 8 lh5801 LGPL3 SHARP LH5801 disassembler
|
|
_d___ 32 lm32 BSD disassembly plugin for Lattice Micro 32 ISA (by Felix Held)
|
|
adA__ 8 luac LGPL3 luac disassemble plugin
|
|
_dA__ 8 32 m680x BSD Capstone M680X Disassembler
|
|
_dA__ 32 m68k BSD Capstone M68K disassembler
|
|
_dA__ 32 malbolge LGPL3 Malbolge Ternary VM (by condret)
|
|
_dA__ 32 mcore LGPL3 Motorola MCORE disassembler
|
|
_d___ 16 mcs96 LGPL3 condrets car
|
|
adAe_ 16 32 64 mips BSD Capstone MIPS disassembler
|
|
_dA__ 16 msp430 LGPL3 msp430 disassembly plugin
|
|
adA__ 16 32 64 null MIT no disassemble (by pancake) v1.0.0
|
|
_dA__ 32 or1k LGPL3 OpenRISC 1000
|
|
_dAe_ 8 pic LGPL3 PIC disassembler
|
|
a____ 32 64 ppc.as LGPL3 as PPC Assembler (use RZ_PPC_AS environment) (by eagleoflqj)
|
|
_dAeI 32 64 ppc BSD Capstone PowerPC disassembler (by pancake)
|
|
_dA__ 32 propeller LGPL3 propeller disassembly plugin
|
|
_dA__ 8 16 pyc LGPL3 PYC disassemble plugin
|
|
adA__ 32 rl78 LGPL3 Renesas RL78 disassembler (by Bastian Engel)
|
|
_dA__ 32 rsp LGPL3 Reality Signal Processor
|
|
_dA__ 32 rx LGPL3 Renesas RX Family disassembler (by Heersin)
|
|
adAeI 32 sh LGPL3 SuperH-4 CPU (by DMaroo)
|
|
_dA__ 8 16 snes LGPL3 SuperNES CPU
|
|
_dA__ 32 64 sparc BSD Capstone SPARC disassembler
|
|
_dA__ 16 spc700 LGPL3 spc700, snes' sound-chip
|
|
_dA__ 32 64 sysz BSD SystemZ CPU disassembler
|
|
_dA__ 32 tms320 LGPL3 TMS320 DSP family (c54x,c55x,c55x+,c64x)
|
|
_dAeI 32 v810 LGPL3 v810 disassembly plugin (by pancake)
|
|
_dAeI 32 v850 LGPL3 v850 disassembly plugin
|
|
adA__ 32 wasm MIT WebAssembly (by cgvwzq) v0.1.0
|
|
a____ 16 32 64 x86.as LGPL3 Intel X86 GNU Assembler (Use RZ_X86_AS env)
|
|
_dAeI 16 32 64 x86 BSD Capstone X86 disassembler
|
|
a____ 16 32 64 x86.nasm LGPL3 X86 nasm assembler
|
|
a____ 16 32 64 x86.nz LGPL3 x86 handmade assembler
|
|
_dA__ 16 xap PD XAP4 RISC (CSR)
|
|
_dA__ 32 xcore BSD Capstone XCore disassembler (by pancake)
|
|
_dAe_ 32 64 riscv.cs BSD Capstone RISCV disassembler
|
|
_dA_I 32 tricore BSD Siemens TriCore CPU (by billow)
|
|
_dA__ 16 32 arc GPL3 Argonaut RISC Core
|
|
_dA__ 32 cris GPL3 Axis Communications 32-bit embedded processor (by pancake)
|
|
_d___ 32 hppa GPL3 HP PA-RISC
|
|
_d___ 32 lanai GPL3 LANAI
|
|
adAe_ 32 64 mips.gnu GPL3 MIPS CPU
|
|
_dA__ 32 nios2 GPL3 NIOS II Embedded Processor
|
|
_dAe_ 32 64 riscv GPL3 RISC-V
|
|
_dA__ 32 64 sparc.gnu GPL3 Scalable Processor Architecture
|
|
_dA__ 8 32 vax GPL3 VAX
|
|
_dAe_ 32 xtensa GPL3 XTensa CPU
|
|
adA__ 8 z80 GPL3 Zilog Z80 (by condret)
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the asm/analysis plugins in quiet mode
|
|
FILE==
|
|
CMDS=Laq
|
|
EXPECT=<<EOF
|
|
6502
|
|
8051
|
|
amd29k
|
|
arm.as
|
|
arm
|
|
avr
|
|
bf
|
|
chip8
|
|
cil
|
|
cr16
|
|
dalvik
|
|
dcpu16
|
|
ebc
|
|
gb
|
|
h8300
|
|
hexagon
|
|
i4004
|
|
i8080
|
|
java
|
|
lh5801
|
|
lm32
|
|
luac
|
|
m680x
|
|
m68k
|
|
malbolge
|
|
mcore
|
|
mcs96
|
|
mips
|
|
msp430
|
|
null
|
|
or1k
|
|
pic
|
|
ppc.as
|
|
ppc
|
|
propeller
|
|
pyc
|
|
rl78
|
|
rsp
|
|
rx
|
|
sh
|
|
snes
|
|
sparc
|
|
spc700
|
|
sysz
|
|
tms320
|
|
v810
|
|
v850
|
|
wasm
|
|
x86.as
|
|
x86
|
|
x86.nasm
|
|
x86.nz
|
|
xap
|
|
xcore
|
|
riscv.cs
|
|
tricore
|
|
arc
|
|
cris
|
|
hppa
|
|
lanai
|
|
mips.gnu
|
|
nios2
|
|
riscv
|
|
sparc.gnu
|
|
vax
|
|
xtensa
|
|
z80
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the asm/analysis plugins in JSON
|
|
FILE==
|
|
CMDS=Laj
|
|
EXPECT=<<EOF
|
|
["6502":{"bits":"8 16 ","license":"LGPL3","description":"6502/NES/C64/Tamagotchi/T-1000 CPU","features":"_d"},"8051":{"bits":"8 ","license":"PD","description":"8051 Intel CPU","features":"ad"},"amd29k":{"bits":"32 ","license":"LGPL3","description":"AMD 29k RISC CPU","features":"_d"},"arm.as":{"bits":"16 32 64","license":"LGPL3","description":"as ARM Assembler (use RZ_ARM32_AS and RZ_ARM64_AS environment)","features":"a_"},"arm":{"bits":"16 32 64","license":"BSD","description":"Capstone ARM disassembler","features":"ad"},"avr":{"bits":"8 16 ","license":"LGPL3","description":"AVR Atmel","features":"ad"},"bf":{"bits":"16 32 64","license":"LGPL3","description":"Brainfuck","features":"ad"},"chip8":{"bits":"32 ","license":"LGPL3","description":"Chip8 disassembler","features":"_d"},"cil":{"bits":"16 32 64","license":"LGPL3","description":".NET Common Intermediate Language","features":"_d"},"cr16":{"bits":"16 ","license":"LGPL3","description":"cr16 disassembly plugin","features":"_d"},"dalvik":{"bits":"32 64","license":"LGPL3","description":"AndroidVM Dalvik","features":"ad"},"dcpu16":{"bits":"16 ","license":"PD","description":"Mojang's DCPU-16","features":"ad"},"ebc":{"bits":"32 64","license":"LGPL3","description":"EFI Bytecode","features":"_d"},"gb":{"bits":"16 ","license":"LGPL3","description":"GameBoy(TM) (z80-like)","features":"ad"},"h8300":{"bits":"16 ","license":"LGPL3","description":"H8/300 disassembly plugin","features":"_d"},"hexagon":{"bits":"32 ","license":"LGPL3","description":"Qualcomm Hexagon (QDSP6) V6","features":"_d"},"i4004":{"bits":"4 ","license":"LGPL3","description":"Intel 4004 microprocessor","features":"_d"},"i8080":{"bits":"8 ","license":"BSD","description":"Intel 8080 CPU","features":"_d"},"java":{"bits":"32 ","license":"LGPL-3","description":"Java bytecode disassembler","features":"ad"},"lh5801":{"bits":"8 ","license":"LGPL3","description":"SHARP LH5801 disassembler","features":"_d"},"lm32":{"bits":"32 ","license":"BSD","description":"disassembly plugin for Lattice Micro 32 ISA","features":"_d"},"luac":{"bits":"8 ","license":"LGPL3","description":"luac disassemble plugin","features":"ad"},"m680x":{"bits":"8 32 ","license":"BSD","description":"Capstone M680X Disassembler","features":"_d"},"m68k":{"bits":"32 ","license":"BSD","description":"Capstone M68K disassembler","features":"_d"},"malbolge":{"bits":"32 ","license":"LGPL3","description":"Malbolge Ternary VM","features":"_d"},"mcore":{"bits":"32 ","license":"LGPL3","description":"Motorola MCORE disassembler","features":"_d"},"mcs96":{"bits":"16 ","license":"LGPL3","description":"condrets car","features":"_d"},"mips":{"bits":"16 32 64","license":"BSD","description":"Capstone MIPS disassembler","features":"ad"},"msp430":{"bits":"16 ","license":"LGPL3","description":"msp430 disassembly plugin","features":"_d"},"null":{"bits":"16 32 64","license":"MIT","description":"no disassemble","features":"ad"},"or1k":{"bits":"32 ","license":"LGPL3","description":"OpenRISC 1000","features":"_d"},"pic":{"bits":"8 ","license":"LGPL3","description":"PIC disassembler","features":"_d"},"ppc.as":{"bits":"32 64","license":"LGPL3","description":"as PPC Assembler (use RZ_PPC_AS environment)","features":"a_"},"ppc":{"bits":"32 64","license":"BSD","description":"Capstone PowerPC disassembler","features":"_d"},"propeller":{"bits":"32 ","license":"LGPL3","description":"propeller disassembly plugin","features":"_d"},"pyc":{"bits":"8 16 ","license":"LGPL3","description":"PYC disassemble plugin","features":"_d"},"rl78":{"bits":"32 ","license":"LGPL3","description":"Renesas RL78 disassembler","features":"ad"},"rsp":{"bits":"32 ","license":"LGPL3","description":"Reality Signal Processor","features":"_d"},"rx":{"bits":"32 ","license":"LGPL3","description":"Renesas RX Family disassembler","features":"_d"},"sh":{"bits":"32 ","license":"LGPL3","description":"SuperH-4 CPU","features":"ad"},"snes":{"bits":"8 16 ","license":"LGPL3","description":"SuperNES CPU","features":"_d"},"sparc":{"bits":"32 64","license":"BSD","description":"Capstone SPARC disassembler","features":"_d"},"spc700":{"bits":"16 ","license":"LGPL3","description":"spc700, snes' sound-chip","features":"_d"},"sysz":{"bits":"32 64","license":"BSD","description":"SystemZ CPU disassembler","features":"_d"},"tms320":{"bits":"32 ","license":"LGPL3","description":"TMS320 DSP family (c54x,c55x,c55x+,c64x)","features":"_d"},"v810":{"bits":"32 ","license":"LGPL3","description":"v810 disassembly plugin","features":"_d"},"v850":{"bits":"32 ","license":"LGPL3","description":"v850 disassembly plugin","features":"_d"},"wasm":{"bits":"32 ","license":"MIT","description":"WebAssembly","features":"ad"},"x86.as":{"bits":"16 32 64","license":"LGPL3","description":"Intel X86 GNU Assembler (Use RZ_X86_AS env)","features":"a_"},"x86":{"bits":"16 32 64","license":"BSD","description":"Capstone X86 disassembler","features":"_d"},"x86.nasm":{"bits":"16 32 64","license":"LGPL3","description":"X86 nasm assembler","features":"a_"},"x86.nz":{"bits":"16 32 64","license":"LGPL3","description":"x86 handmade assembler","features":"a_"},"xap":{"bits":"16 ","license":"PD","description":"XAP4 RISC (CSR)","features":"_d"},"xcore":{"bits":"32 ","license":"BSD","description":"Capstone XCore disassembler","features":"_d"},"riscv.cs":{"bits":"32 64","license":"BSD","description":"Capstone RISCV disassembler","features":"_d"},"tricore":{"bits":"32 ","license":"BSD","description":"Siemens TriCore CPU","features":"_d"},"arc":{"bits":"16 32 ","license":"GPL3","description":"Argonaut RISC Core","features":"_d"},"cris":{"bits":"32 ","license":"GPL3","description":"Axis Communications 32-bit embedded processor","features":"_d"},"hppa":{"bits":"32 ","license":"GPL3","description":"HP PA-RISC","features":"_d"},"lanai":{"bits":"32 ","license":"GPL3","description":"LANAI","features":"_d"},"mips.gnu":{"bits":"32 64","license":"GPL3","description":"MIPS CPU","features":"ad"},"nios2":{"bits":"32 ","license":"GPL3","description":"NIOS II Embedded Processor","features":"_d"},"riscv":{"bits":"32 64","license":"GPL3","description":"RISC-V","features":"_d"},"sparc.gnu":{"bits":"32 64","license":"GPL3","description":"Scalable Processor Architecture","features":"_d"},"vax":{"bits":"8 32 ","license":"GPL3","description":"VAX","features":"_d"},"xtensa":{"bits":"32 ","license":"GPL3","description":"XTensa CPU","features":"_d"},"z80":{"bits":"8 ","license":"GPL3","description":"Zilog Z80","features":"ad"}]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the lang plugins
|
|
FILE==
|
|
CMDS=<<EOF
|
|
Ll~^pipe
|
|
Ll~lib
|
|
EOF
|
|
EXPECT=<<EOF
|
|
pipe: Use #!pipe node script.js (LGPL)
|
|
lib: Load libs directly into rizin (LGPL)
|
|
EOF
|
|
RUN
|
|
|
|
NAME=Print the lang plugins in JSON
|
|
BROKEN=1
|
|
FILE==
|
|
CMDS=Llj
|
|
EXPECT=<<EOF
|
|
[{"name":"c","description":"C language extension","license":"LGPL"},{"name":"cpipe","description":"rzpipe scripting in C","license":"LGPL"},{"name":"vala","description":"Vala language extension","license":"LGPL"},{"name":"rust","description":"Rust language extension","license":"MIT"},{"name":"zig","description":"Zig language extension","license":"MIT"},{"name":"spp","description":"SPP template programs","license":"MIT"},{"name":"pipe","description":"Use #!pipe node script.js","license":"LGPL"},{"name":"lib","description":"Load libs directly into rizin","license":"LGPL"}]
|
|
EOF
|
|
RUN
|