rizin/test/db/analysis/v850
2026-04-04 12:03:06 +00:00

643 lines
27 KiB
Text

NAME=v850 preludes
FILE=bins/v850/hello-v850e
CMDS=<<EOF
aap
afl
EOF
EXPECT=<<EOF
0x00100000 3 108 entry0
0x0010006c 1 36 sym._compute
0x00100090 1 64 main
0x001000d0 5 74 sym.___main
0x0010011a 3 34 sym._exit
0x0010013c 1 24 sym.__printf_r
0x00100154 1 28 sym._printf
0x00100170 329 6958 -> 5454 sym.__vfprintf_r
0x00101cb8 1 24 sym._vfprintf
0x00101cd0 5 146 sym.___sbprintf
0x00101d64 27 264 sym.___swsetup_r
0x00101e6c 20 170 sym.___call_exitprocs
0x00101f16 3 64 sym.__exit
0x00101f58 21 332 sym._quorem
0x001020a4 245 5164 -> 5018 sym.__dtoa_r
0x001034d0 40 428 sym.___sflush_r
0x0010367c 6 68 sym.__fflush_r
0x001036c0 3 40 sym._fflush
0x001036ec 1 106 sym._std
0x00103756 1 18 sym.__cleanup_r
0x00103768 1 88 sym.___sinit.part___0
0x001037c4 3 60 sym.___sfmoreglue
0x00103800 13 180 sym.___sfp
0x001038b4 1 22 sym.__cleanup
0x001038ca 3 20 sym.___sinit
0x001038e6 1 22 sym.___fp_lock_all
0x001038fc 1 22 sym.___fp_unlock_all
0x00103912 7 196 sym.__malloc_trim_r
0x001039d6 41 668 sym.__free_r
0x00103c72 8 72 sym.__fwalk
0x00103cba 8 76 sym.__fwalk_reent
0x00103d1c 6 122 sym.___swhatbuf_r
0x00103d96 10 204 sym.___smakebuf_r
0x00103e62 119 1806 sym.__malloc_r
0x00104590 4 28 sym._memcpy
0x001045ac 4 24 sym._memset
0x001045c4 1 2 sym.___malloc_lock
0x001045c6 1 2 sym.___malloc_unlock
0x001045c8 12 136 sym.__Balloc
0x00104650 9 198 sym.___multadd
0x00104716 15 194 sym.___s2b
0x001047d8 12 86 sym.___hi0bits
0x0010482e 19 134 sym.___lo0bits
0x001048b4 3 52 sym.___i2b
0x001048e8 22 392 sym.___multiply
0x00104a70 15 188 sym.___pow5mult
0x00104b2c 21 342 sym.___lshift
0x00104c82 28 470 sym.___mdiff
0x00104e58 14 180 sym.___b2d
0x00104f0c 12 272 sym.___d2b
0x0010501c 4 148 sym.___ratio
0x001050b0 5 114 sym.__mprec_log10
0x001051c2 4 46 sym.__sbrk_r
0x001051f0 3 50 sym.___sread
0x00105226 3 70 sym.___swrite
0x0010526c 3 52 sym.___sseek
0x001052a0 1 16 sym.___sclose
0x001052cc 3 18 loc.___trap0
0x001052e0 12 132 sym.___sprint_r.part___0
0x00105364 3 28 sym.___sprint_r
0x00105380 145 3942 -> 2252 sym.__vfiprintf_r
0x00106300 1 24 sym._vfiprintf
0x00106318 5 146 sym.___sbprintf_0x106318
0x001063ac 4 52 sym.__write_r
0x001063e0 5 90 sym.___assert_func
0x0010643a 12 132 sym.__calloc_r
0x001064be 4 46 sym.__close_r
0x001064ec 18 172 sym.__fclose_r
0x00106598 1 18 sym._fclose
0x001065aa 1 20 sym.__fiprintf_r
0x001065be 1 26 sym._fiprintf
0x001065d8 17 198 sym.___fputwc
0x0010669e 3 44 sym.__fputwc_r
0x001066ca 6 94 sym._fputwc
0x00106728 4 50 sym.__fstat_r
0x0010675a 64 1032 sym.___sfvwrite_r
0x00106b62 4 46 sym.__isatty_r
0x00106b90 8 90 sym.__setlocale_r
0x00106bea 1 22 sym._setlocale
0x00106c00 4 52 sym.__lseek_r
0x00106c34 1 34 sym.__mbtowc_r
0x00106c56 18 120 sym.___ascii_mbtowc
0x00106cce 4 52 sym.__read_r
0x00106d02 73 1322 sym.__realloc_r
0x0010722c 12 150 sym.__sbrk
0x001072c2 19 248 sym.___swbuf_r
0x001073ba 1 22 sym.___swbuf
0x001073d0 5 70 sym.__wcrtomb_r
0x00107416 1 24 sym._wcrtomb
0x0010742e 1 22 sym.__wctomb_r
0x00107468 1 22 sym.__write
0x0010747e 1 16 sym._abort
0x0010748e 1 20 sym.__close
0x001074a2 1 22 sym.__fstat
0x001074b8 1 4 sym.__isatty
0x001074bc 1 24 sym.__lseek
0x001074d4 1 22 sym.__read
0x001074ea 6 46 sym.__init_signal_r.part___0
0x00107518 3 26 sym.__init_signal_r
0x00107532 8 92 sym.__signal_r
0x0010758e 11 126 sym.__raise_r
0x0010760c 13 110 sym.___sigtramp_r
0x0010767a 1 18 sym._raise
0x0010768c 1 22 sym._signal
0x001076a2 3 30 sym.__init_signal
0x001076c0 1 18 sym.___sigtramp
0x001076d2 4 50 sym.__kill_r
0x00107704 1 12 sym.__getpid_r
0x00107710 1 4 sym.__getpid
0x00107714 1 24 sym.__kill
0x0010772c 3 92 sym.___unorddf2
EOF
RUN
NAME=v850 preludes
FILE=bins/v850/ired_v850
CMDS=<<EOF
aap
afl
EOF
EXPECT=<<EOF
0x00100000 3 108 entry0
0x0010006c 3 130 sym._io_open
0x001000ee 22 484 sym._hexdump
0x001002d2 19 1970 -> 318 sym._print_fmt
0x00100a84 19 608 sym._str2ut64
0x00100ce4 12 228 sym._hex2byte
0x00100dc8 13 236 sym._hexstr2raw
0x00100eb4 9 280 sym._getcurblk
0x00100fcc 4 272 sym._Nset
0x001010dc 1 120 sym._Nsetf
0x00101154 4 392 sym._Naddi
0x001012dc 4 392 sym._Nsubi
0x00101464 1 240 sym._Nadd
0x00101554 1 240 sym._Nsub
0x00101644 1 224 sym._Nmul
0x00101724 7 340 sym._Ndiv
0x00101878 1 68 sym._error
0x001018bc 6 408 sym._expr
0x00101a54 9 514 sym._term
0x00101c56 5 1324 -> 170 sym._prim
0x00102182 1 50 sym._cin_putback
0x001021b4 6 120 sym._r_num_calc_index
0x0010222c 9 172 sym._cin_get
0x001022d8 16 518 sym._cin_get_num
0x001024de 36 1522 -> 866 sym._get_token
0x00102ad0 1 72 sym._load_token
0x00102b18 21 804 sym._r_num_calc
0x00102e3c 5 132 sym._cmd_hexdump
0x00102ec0 7 158 sym._cmd_print
0x00102f5e 7 180 sym._cmd_bytedump
0x00103012 17 810 sym._cmd_search
0x0010333c 10 318 sym._cmd_bsize
0x0010347a 8 506 sym._cmd_seek
0x00103674 10 244 sym._cmd_dump
0x00103768 13 356 sym._cmd_load
0x001038cc 13 342 sym._cmd_write
0x00103a22 4 152 sym._cmd_help
0x00103aba 29 984 sym._cmd_resize
0x00103e92 14 562 sym._cmd_system
0x001040c4 4 262 sym._red_slurpin
0x001041ca 7 238 sym._red_interpret
0x001042b8 9 796 -> 186 sym._red_cmd
0x001045d4 17 790 sym._red_prompt
0x001048ea 18 454 sym._red_open
0x00104ab0 1 44 sym._red_help
0x00104adc 21 748 -> 464 main
0x00104e48 2 1166 -> 150 fcn.00104e48
0x00104ec4 84 986 sym.___udivdi3
0x001052d8 5 74 sym.___main
0x00105322 3 34 sym._exit
0x00105344 18 172 sym.__fclose_r
0x001053f0 1 18 sym._fclose
0x00105402 40 428 sym.___sflush_r
0x001055ae 6 68 sym.__fflush_r
0x001055f2 3 40 sym._fflush
0x0010561a 15 304 sym.__fgets_r
0x0010574a 1 24 sym._fgets
0x00105766 1 106 sym._std
0x001057d0 1 18 sym.__cleanup_r
0x001057e2 1 88 sym.___sinit.part___0
0x0010583e 3 60 sym.___sfmoreglue
0x0010587a 13 180 sym.___sfp
0x0010592e 1 22 sym.__cleanup
0x00105944 3 20 sym.___sinit
0x00105958 1 2 sym.___sfp_lock_acquire
0x0010595a 1 2 sym.___sfp_lock_release
0x00105960 1 22 sym.___fp_lock_all
0x00105976 1 22 sym.___fp_unlock_all
0x0010598c 8 174 sym.__fopen_r
0x00105a3a 1 22 sym._fopen
0x00105a50 1 20 sym.__fprintf_r
0x00105a64 1 26 sym._fprintf
0x00105a7e 16 318 sym.__fread_r
0x00105bbc 1 36 sym._fread
0x00105be0 7 196 sym.__malloc_trim_r
0x00105ca4 41 668 sym.__free_r
0x00105f40 1 12 sym.__fseek_r
0x00105f4c 1 24 sym._fseek
0x00105f64 65 784 sym.__fseeko_r
0x00106274 1 24 sym._fseeko
0x0010628c 1 2 sym.__fstat_r
0x0010628e 4 48 fcn.0010628e
0x001062be 22 198 sym.__ftello_r
0x00106384 1 18 sym._ftello
0x00106396 8 72 sym.__fwalk
0x001063de 8 76 sym.__fwalk_reent
0x0010642a 8 144 sym.__fwrite_r
0x001064ba 1 36 sym._fwrite
0x001064de 1 4 sym.__getpid
0x001064e2 6 122 sym.___swhatbuf_r
0x0010655c 10 204 sym.___smakebuf_r
0x00106628 1 18 sym._malloc
0x0010663a 1 18 sym._free
0x0010664c 119 1806 sym.__malloc_r
0x00106d7a 4 28 sym._memcpy
0x00106d96 4 24 sym._memset
0x00106dae 1 2 sym.___malloc_lock
0x00106db0 1 2 sym.___malloc_unlock
0x00106db2 4 52 sym.__open_r
0x00106de6 24 354 sym.__perror_r
0x00106f48 1 18 sym._perror
0x00106f5a 1 24 sym.__printf_r
0x00106f72 1 28 sym._printf
0x00106f8e 1 16 sym.__putchar_r
0x00106f9e 1 24 sym._putchar
0x00106fb6 5 152 sym.__puts_r
0x0010704e 1 18 sym._puts
0x00107060 3 30 sym._lflush
0x0010707e 29 356 sym.___srefill_r
0x001071e2 4 46 sym.__sbrk_r
0x00107210 1 24 sym._setenv
0x00107228 1 18 sym._unsetenv
0x0010723a 37 494 sym.__setenv_r
0x00107428 11 152 sym.__unsetenv_r
0x001074c0 1 72 sym.__sprintf_r
0x00107508 1 76 sym._sprintf
0x00107554 1 86 sym._sscanf
0x001075aa 1 88 sym.__sscanf_r
0x00107602 3 50 sym.___sread
0x00107638 3 70 sym.___swrite
0x0010767e 3 52 sym.___sseek
0x001076b2 1 16 sym.___sclose
0x001076ea 1 18 sym._strdup
0x001076fc 3 48 sym.__strdup_r
0x0010772c 5 1442 -> 68 sym.__strerror_r
0x00107cce 1 22 sym._strerror
0x00107ce4 1 22 sym._strerror_l
0x00107cfc 5 28 sym._strlen
0x00107d64 316 6824 -> 5268 sym.__svfprintf_r
0x0010980c 30 5436 -> 512 sym.___ssvfscanf_r
0x00109fce 55 3600 -> 844 fcn.00109fce
0x0010ade0 1 18 sym._close
0x0010adf2 1 24 sym._lseek
0x0010ae0a 1 26 sym._open
0x0010ae24 1 24 sym._read
0x0010ae3c 3 32 sym.__system_r
0x0010ae5c 3 32 sym._system
0x0010ae7c 1 18 sym._unlink
0x0010ae8e 1 24 sym._write
0x0010aea6 1 4 sym.__user_strerror
0x0010aeaa 4 46 sym.__unlink_r
0x0010aed8 329 6958 -> 5454 sym.__vfprintf_r
0x0010ca20 1 24 sym._vfprintf
0x0010ca38 5 146 sym.___sbprintf
0x0010cacc 4 52 sym.__write_r
0x0010cb00 27 264 sym.___swsetup_r
0x0010cc08 20 170 sym.___call_exitprocs
0x0010ccb2 3 64 sym.__exit
0x0010ccf2 4 46 sym.__close_r
0x0010cd20 21 332 sym._quorem
0x0010ce6c 245 5166 -> 5020 sym.__dtoa_r
0x0010e29c 1 6 sym.___errno
0x0010e2a2 7 60 sym._fileno
0x0010e2de 15 146 sym.___sflags
0x0010e370 1 22 sym.__fstat
0x0010e386 64 1032 sym.___sfvwrite_r
0x0010e78e 15 160 sym.__findenv_r
0x0010e82e 1 18 sym.__getenv_r
0x0010e840 4 46 sym.__isatty_r
0x0010e86e 1 14 sym._iswspace
0x0010e87c 3 30 sym._iswspace_l
0x0010e89a 8 90 sym.__setlocale_r
0x0010e8f4 1 22 sym._setlocale
0x0010e920 4 52 sym.__lseek_r
0x0010e954 5 92 sym.__mbrtowc_r
0x0010e9b0 1 36 sym._mbrtowc
0x0010e9d4 1 34 sym.__mbtowc_r
0x0010e9f6 18 120 sym.___ascii_mbtowc
0x0010ea6e 12 136 sym.__Balloc
0x0010eaf6 9 198 sym.___multadd
0x0010ebbc 15 194 sym.___s2b
0x0010ec7e 12 86 sym.___hi0bits
0x0010ecd4 19 134 sym.___lo0bits
0x0010ed5a 3 52 sym.___i2b
0x0010ed8e 22 392 sym.___multiply
0x0010ef16 15 188 sym.___pow5mult
0x0010efd2 21 342 sym.___lshift
0x0010f128 22 396 sym.___mdiff
0x0010f2b4 7 74 sym.___ulp
0x0010f2fe 14 180 sym.___b2d
0x0010f3b2 12 272 sym.___d2b
0x0010f4c2 4 148 sym.___ratio
0x0010f556 5 114 sym.__mprec_log10
0x0010f668 1 20 sym.__open
0x0010f67c 8 108 sym.__putc_r
0x0010f6e8 1 22 sym._putc
0x0010f6fe 4 52 sym.__read_r
0x0010f732 21 1058 -> 342 sym.__realloc_r
0x0010fae0 6 348 -> 100 fcn.0010fae0
0x0010fb30 1 8 fcn.0010fb30
0x0010fb5a 40 1076 -> 674 fcn.0010fb5a
0x0010fb84 4 900 -> 62 fcn.0010fb84
0x0010fbd6 1 2 fcn.0010fbd6
0x0010fbfe 6 1036 -> 134 fcn.0010fbfe
0x0010fc5c 27 274 sym.__sbrk
0x0010fde4 4 98 sym._sulp
0x0010fe46 279 5280 -> 4792 sym.__strtod_l
0x00111036 6 4152 -> 148 fcn.00111036
0x001112e6 1 18 sym.__strtod_r
0x001112f8 1 24 sym._strtod_l
0x00111310 1 28 sym._strtod
0x0011132c 10 222 sym._strtof_l
0x0011140a 10 226 sym._strtof
0x001114ec 47 376 sym.__strtol_l.isra___0
0x00111664 1 12 sym.__strtol_r
0x00111670 1 24 sym._strtol_l
0x00111688 1 24 sym._strtol
0x001116a0 42 350 sym.__strtoul_l.isra___0
0x001117fe 1 12 sym.__strtoul_r
0x0011180a 1 24 sym._strtoul_l
0x00111822 1 24 sym._strtoul
0x0011183c 18 402 sym.___ssprint_r
0x001119ce 151 3464 -> 2318 sym.__svfiprintf_r
0x00111bba 2 6 fcn.00111bba
0x00111f24 1 4 fcn.00111f24
0x00112758 12 182 sym.__sungetc_r
0x0011280e 7 84 sym.___ssrefill_r
0x00112862 8 242 sym.__sfread_r
0x00112954 30 3974 -> 502 sym.___ssvfiscanf_r
0x00112cf0 1 4 fcn.00112cf0
0x001138e8 3 18 loc.___trap0
0x001138fa 7 134 sym.___submore
0x00113980 24 306 sym.__ungetc_r
0x00113ab2 1 22 sym._ungetc
0x00113ac8 1 20 sym.__unlink
0x00113adc 12 132 sym.___sprint_r.part___0
0x00113b60 3 28 sym.___sprint_r
0x00113b7c 145 3942 -> 2252 sym.__vfiprintf_r
0x00114afc 1 24 sym._vfiprintf
0x00114b14 5 146 sym.___sbprintf_0x114b14
0x00114ba8 19 248 sym.___swbuf_r
0x00114ca0 1 22 sym.___swbuf
0x00114cb6 1 22 sym.__wctomb_r
0x00114cf0 1 22 sym.__write
0x00114d06 1 16 sym._abort
0x00114d16 5 90 sym.___assert_func
0x00114d70 12 132 sym.__calloc_r
0x00114df4 1 20 sym.__close
0x00114e08 1 20 sym.__fiprintf_r
0x00114e1c 1 26 sym._fiprintf
0x00114e36 17 198 sym.___fputwc
0x00114efc 3 44 sym.__fputwc_r
0x00114f28 21 270 sym._fputwc
0x00115072 19 1448 -> 356 sym.___gethex
0x00115172 1 12 fcn.00115172
0x0011517e 1 2 fcn.0011517e
0x0011518c 1 8 fcn.0011518c
0x0011557e 2 16 fcn.0011557e
0x0011559e 1 2 fcn.0011559e
0x001155d4 113 1728 -> 1602 fcn.001155d4
0x00115840 44 612 sym.___hexnan
0x00115aa4 1 4 sym.__isatty
0x00115aac 1 24 sym.__lseek
0x00115ac4 1 22 sym.__read
0x00115ae2 6 46 sym.__init_signal_r.part___0
0x00115b10 3 26 sym.__init_signal_r
0x00115b2a 8 92 sym.__signal_r
0x00115b86 11 126 sym.__raise_r
0x00115c04 13 110 sym.___sigtramp_r
0x00115c72 1 18 sym._raise
0x00115c84 1 22 sym._signal
0x00115c9a 3 30 sym.__init_signal
0x00115cb8 1 18 sym.___sigtramp
0x00115cca 4 50 sym.__kill_r
0x00115cfc 1 12 sym.__getpid_r
0x00115d08 5 70 sym.__wcrtomb_r
0x00115d4e 1 24 sym._wcrtomb
0x00115d66 1 24 sym.__kill
0x00115d7e 3 84 sym.___unordsf2
0x00115dd2 3 92 sym.___unorddf2
EOF
RUN
NAME=v850 random pseudo
FILE=bins/elf/ld-2.27.so
CMDS=<<EOF
sd +128
e asm.arch=v850
e asm.pseudo=true
b 64
pi 64~=
EOF
EXPECT=<<EOF
*(r8 + 4167) = (byte) r24
r9 = ~lp
r1 = ~gp
r13 = 8
r13 = 0
r9 = r2
r17 = r13 | 904
lp = 0
r9 = r0
sp = ~gp
r11 = (34120 << XX) + r26
r6 = r18 | 0
r9 = r16
r10 = sp | 0
r9 = r8
r9 = r16
r22 = tp | 0
gp == -1
r17 = r8 & 0
r0 = ~r2
r25 = (byte) *(tp + 8805)
r9 = r0
r9 = ~lp
r9 = r8
r24 += r7
lp = (unsigned half) *(lp - 1)
r6 *= lp
r0 -= ep
EOF
RUN
NAME=v850 plf @@F functions hello-v850e
FILE=bins/v850/hello-v850e
CMDS=<<EOF
aaa
pdf @@F~:..33
plf @@F~:..33
EOF
EXPECT=<<EOF
;-- section..text:
;-- segment.LOAD0:
;-- segment.ehdr:
;-- .text:
;-- _start:
;-- pc:
/ entry0();
| 0x00100000 movea 0xff, r0, r20 ; [00] -r-x section size 30816 named .text
| 0x00100004 mov 0xffff, r21
| 0x0010000a mov loc._stack, sp
| 0x00100010 mov loc.___dtors, ep
| 0x00100016 mov loc.__gp, gp
| 0x0010001c mov loc._etext, r6
| 0x00100022 ldsr r6, CTBP, 0
| 0x00100026 stsr PSW, r6, 0
| 0x0010002a movhi 1, r0, r7
| 0x0010002e or r7, r6
| 0x00100030 ldsr r6, PSW, 0
| 0x00100034 movhi 2, r0, r6
| 0x00100038 ldsr r6, FPSR, 0
| 0x0010003c mov obj._initialized___901, r6
| 0x00100042 mov loc._heap_start, r7
| 0x00100048 st.w r0, 0[r6]
| 0x0010004c addi 4, r6, r6
| 0x00100050 cmp r7, r6
| 0x00100052 bl 0x100048
| 0x00100054 jarl dbg.__main, lp ; __main(void)
| 0x00100058 addi -16, sp, sp
| 0x0010005c mov 0, r6
| 0x0010005e mov 0, r7
| 0x00100060 mov 0, r8
| 0x00100062 jarl main, lp ; int main(int argc, char **argv, char **envp)
| 0x00100066 mov r10, r6
0x100000 (set r20 (+ (var r0) (bv 32 0xff)))
0x100004 (set r21 (bv 32 0xffff))
0x10000a (set sp (bv 32 0x200000))
0x100010 (set ep (bv 32 0x108788))
0x100016 (set gp (bv 32 0x110788))
0x10001c (set r6 (bv 32 0x107860))
0x100022 (set CTBP (var r6))
0x100026 (set r6 (var PSW))
0x10002a (set r7 (+ (var r0) (bv 32 0x10000)))
0x10002e (seq (set result (| (var r6) (var r7))) (set PSW (| (| (<< (ite false (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))) (set r6 (var result)))
0x100030 (set PSW (var r6))
0x100034 (set r6 (+ (var r0) (bv 32 0x20000)))
0x100038 (set FPSR (var r6))
0x10003c (set r6 (bv 32 0x108790))
0x100042 (set r7 (bv 32 0x1087d4))
0x100048 (seq (set _adr (+ (var r6) (bv 32 0x0))) (storew 0 (var _adr) (var r0)))
0x10004c (seq (set result (+ (var r6) (bv 32 0x4))) (set PSW (| (| (| (<< (ite (|| (&& (sle (var result) (var r6)) (! (== (var result) (var r6)))) (&& (sle (var result) (bv 32 0x4)) (! (== (var result) (bv 32 0x4))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x3) false) (<< (ite (let _x (var result) (|| (! (sle (var _x) (bv 32 0x7fffffff))) (&& (sle (var _x) (bv 32 0x80000000)) (! (== (var _x) (bv 32 0x80000000)))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false)) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))) (set r6 (var result)))
0x100050 (seq (set result (- (var r6) (var r7))) (set PSW (| (| (| (<< (ite (&& (sle (var r7) (var r6)) (! (== (var r7) (var r6)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x3) false) (<< (ite (let _x (var result) (|| (! (sle (var _x) (bv 32 0x7fffffff))) (&& (sle (var _x) (bv 32 0x80000000)) (! (== (var _x) (bv 32 0x80000000)))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false)) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))))
0x100052 (branch (! (is_zero (& (>> (var PSW) (bv 32 0x3) false) (bv 32 0x1)))) (seq (set _pc (+ (bv 32 0x100052) (bv 32 0xfffffff6))) (jmp (var _pc))) nop)
0x100054 (seq (set lp (+ (bv 32 0x100054) (bv 32 0x4))) (set _pc (+ (bv 32 0x100054) (bv 32 0x7c))) (jmp (var _pc)))
0x100058 (seq (set result (+ (var sp) (bv 32 0xfffffff0))) (set PSW (| (| (| (<< (ite (|| (&& (sle (var result) (var sp)) (! (== (var result) (var sp)))) (&& (sle (var result) (bv 32 0xfffffff0)) (! (== (var result) (bv 32 0xfffffff0))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x3) false) (<< (ite (let _x (var result) (|| (! (sle (var _x) (bv 32 0x7fffffff))) (&& (sle (var _x) (bv 32 0x80000000)) (! (== (var _x) (bv 32 0x80000000)))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false)) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))) (set sp (var result)))
0x10005c (set r6 (bv 32 0x0))
0x10005e (set r7 (bv 32 0x0))
0x100060 (set r8 (bv 32 0x0))
0x100062 (seq (set lp (+ (bv 32 0x100062) (bv 32 0x4))) (set _pc (+ (bv 32 0x100062) (bv 32 0x2e))) (jmp (var _pc)))
0x100066 (set r6 (var r10))
0x100068 (seq (set lp (+ (bv 32 0x100068) (bv 32 0x4))) (set _pc (+ (bv 32 0x100068) (bv 32 0xb2))) (jmp (var _pc)))
0x1000d0 (seq (set _tmp (var sp)) (set _tmp (- (var _tmp) (bv 32 0x4))) (set _adr (& (var _tmp) (bv 32 0xfffffffc))) (storew 0 (var _adr) (var r28)) (set _tmp (- (var _tmp) (bv 32 0x4))) (set _adr (& (var _tmp) (bv 32 0xfffffffc))) (storew 0 (var _adr) (var r29)) (set _tmp (- (var _tmp) (bv 32 0x4))) (set _adr (& (var _tmp) (bv 32 0xfffffffc))) (storew 0 (var _adr) (var lp)) (set sp (- (var _tmp) (<< (bv 32 0x0) (bv 32 0x2) false))))
0x1000d4 (set r10 (bv 32 0x108790))
0x1000da (seq (set _adr (+ (var r10) (bv 32 0x0))) (set r11 (loadw 0 32 (var _adr))))
0x1000de (seq (set result (- (var r11) (bv 32 0x0))) (set PSW (| (| (| (<< (ite (&& (sle (bv 32 0x0) (var r11)) (! (== (bv 32 0x0) (var r11)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x3) false) (<< (ite (let _x (var result) (|| (! (sle (var _x) (bv 32 0x7fffffff))) (&& (sle (var _x) (bv 32 0x80000000)) (! (== (var _x) (bv 32 0x80000000)))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false)) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))))
0x1000e0 (branch (! (! (is_zero (& (>> (var PSW) (bv 32 0x0) false) (bv 32 0x1))))) (seq (set _pc (+ (bv 32 0x1000e0) (bv 32 0x36))) (jmp (var _pc))) nop)
0x1000e2 (set r29 (bv 32 0x108788))
EOF
RUN
NAME=v850 s main hello-v850e
FILE=bins/v850/hello-v850e
CMDS=<<EOF
s main
s
EOF
EXPECT=<<EOF
0x100090
EOF
RUN
NAME=v850 disassembly hello-v850e
FILE=bins/v850/hello-v850e
CMDS=<<EOF
pd 10 @ 0x1005e8
pd 10 @ 0x1006da
pd 10 @ 0x100eb8
EOF
EXPECT=<<EOF
0x001005e8 mov 0, r27 ; vfprintf.c:1064
0x001005ea addi -48, r23, r12
0x001005ee mov r27, r10 ; vfprintf.c:1082
0x001005f0 ld.b 0[r21], r23 ; vfprintf.c:1084
0x001005f4 shl 2, r10 ; vfprintf.c:1083
0x001005f6 add 1, r21 ; vfprintf.c:1084
0x001005f8 add r10, r27 ; vfprintf.c:1083
0x001005fa add r27, r27
0x001005fc add r12, r27
0x001005fe addi -48, r23, r12 ; vfprintf.c:1084
0x001006da cmpf.d ge, r12, r14, 0
0x001006de trfsr 0
,=< 0x001006e2 be 0x101336
| 0x001006e6 ld.dw 32[sp], r10 ; vfprintf.c:1230
| 0x001006ec st.w r0, 20[sp]
| 0x001006f0 st.w r0, 24[sp]
| 0x001006f4 ld.dw 20[sp], r12
| 0x001006fa cmpf.d p, r10, r12, 0
| 0x001006fe trfsr 0
,==< 0x00100702 be 0x1018d4
0x00100eb8 addi 8, r13, r29
0x00100ebc cmpf.d e, r14, r6, 0
0x00100ec0 trfsr 0
,=< 0x00100ec4 be 0x101246
| 0x00100ec8 addi 1, r22, r16 ; vfprintf.c:1751
| 0x00100ecc add r23, r10 ; vfprintf.c:1754
| 0x00100ece cmp 7, r17
| 0x00100ed0 st.w r16, 0[r13]
| 0x00100ed4 st.w r23, 4[r13]
| 0x00100ed8 st.w r10, 124[sp]
EOF
RUN
NAME=v850 disassembly ired_v850
FILE=bins/v850/ired_v850
CMDS=<<EOF
pd 10 @ 0x0010101e
EOF
EXPECT=<<EOF
0x0010101e ld.w 28[r29], r10
0x00101022 and r0, r10
0x00101024 st.w r10, 12[r29]
0x00101028 ld.w 28[r29], r10
0x0010102c shl 31, r10
0x0010102e ld.w 24[r29], r11
0x00101032 shr 1, r11
0x00101034 st.w r11, 16[r29]
0x00101038 ld.w 16[r29], r11
0x0010103c or r10, r11
EOF
RUN
NAME=v850 s main hello-v850e_stripped
FILE=bins/v850/hello-v850e_stripped
CMDS=<<EOF
s main
s
EOF
EXPECT=<<EOF
0x100090
EOF
RUN
NAME=v850 s main ired_v850
FILE=bins/v850/ired_v850
CMDS=<<EOF
s main
s
EOF
EXPECT=<<EOF
0x104adc
EOF
RUN
NAME=v850 local variables
FILE=bins/v850/emulateme.v850
CMDS=<<EOF
aaa
pdf @ main
EOF
EXPECT=<<EOF
; CALL XREF from entry0 @ 0x100062
;-- _main:
/ int main(int argc, char **argv, char **envp);
| ; arg char **envp @ stack + 0x8
| ; arg int32_t arg_ch @ stack + 0xc
| ; arg int32_t arg_18h @ stack + 0x18
| ; arg int32_t arg_1ch @ stack + 0x1c
| 0x0010016a add -8, sp
| 0x0010016c st.w lp, 4[sp]
| 0x00100170 st.w r29, 0[sp]
| 0x00100174 add -8, sp
| 0x00100176 mov sp, r29
| 0x00100178 st.w r6, 4[r29]
| 0x0010017c st.w r7, 0[r29]
| 0x00100180 mov sym._decrypt, r10
| 0x00100186 jarl [r10], lp
| 0x0010018a mov 0, r10
| 0x0010018c mov r29, sp
| 0x0010018e ld.w 12[sp], lp
| 0x00100192 ld.w 8[sp], r29
| 0x00100196 addi 16, sp, sp
\ 0x0010019a jmp [lp]
EOF
RUN