NAME=LUAJIT: Disassembly
FILE=bins/luaJIT/bin/big_2.1.ljbc
CMDS=<<EOF
aa
afl
agf ascii
pd 10
s entry8
agf ascii
axl
pdf
EOF
EXPECT=<<EOF
0x0000001e    4 44           entry9
0x000000b1    2 16           entry8
0x000000f3    5 128          entry7
0x000001e6    1 64           entry6
0x000002aa    9 108  -> 100  entry5
0x000003b6   13 92   -> 80   entry4
0x00000441    1 12           entry3
0x00000468    4 52           entry2
0x000004e0    1 80           entry1
0x000005e5    2 124          entry0
.---------------------------------------------------.
|  0x5e5                                            |
| ; [02] -r-x section size 124 named fcn.0x5d7.code |
|   ;-- section.fcn.0x5d7.code:                     |
| entry0();                                         |
| gget r0 0                                         |
| knum r1 0                                         |
| tsets r1 0 1                                      |
| gget r0 0                                         |
| kpri r1 2                                         |
| tsets r1 0 2                                      |
| knil r0...r3                                      |
| tdup r4 3                                         |
| fnew r5 4                                         |
| mov r6 r5                                         |
| knum r8 1                                         |
| call r6 2 2                                       |
| mov r7 r6                                         |
| kshort r9 45                                      |
| kpri r10 1                                        |
| call r7 3 3                                       |
| mov r9 r6                                         |
| kshort r11 50                                     |
| kpri r12 2                                        |
| call r9 3 3                                       |
| fnew r11 5                                        |
| fnew r12 6                                        |
| fnew r13 7                                        |
| fnew r14 8                                        |
| fnew r15 9                                        |
| fnew r16 10                                       |
| fnew r17 11                                       |
| mov r18 r17                                       |
| call r18 1 1                                      |
| uclo r0 32768                                     |
`---------------------------------------------------'
    v
    |
    '--------.
             |
         .---------------------------------.
         |  0x65d                          |
         | ; CODE XREF from entry0 @ 0x659 |
         | ret0 r0 1                       |
         `---------------------------------'
            ;-- section.fcn.0x5d7.code:
/ entry0();
|           0x000005e5      gget  r0 0                                 ; [02] -r-x section size 124 named fcn.0x5d7.code
|           0x000005e9      knum  r1 0
|           0x000005ed      tsets r1 0 1
|           0x000005f1      gget  r0 0
|           0x000005f5      kpri  r1 2
|           0x000005f9      tsets r1 0 2
|           0x000005fd      knil  r0...r3
|           0x00000601      tdup  r4 3
|           0x00000605      fnew  r5 4
|           0x00000609      mov   r6 r5
.-------------------------------------------------.
|  0xb1                                           |
| ; [58] -r-x section size 16 named fcn.0xa6.code |
|   ;-- section.fcn.0xa6.code:                    |
| entry8();                                       |
| kshort r1 0                                     |
| fnew r2 0                                       |
| uclo r0 32768                                   |
`-------------------------------------------------'
    v
    |
    '-------.
            |
        .--------------------------------.
        |  0xbd                          |
        | ; CODE XREF from entry8 @ 0xb9 |
        | ret1 r2 2                      |
        `--------------------------------'
                               entry9+24 0x36 ->      CODE -> 0x3e entry9+32
                                entry8+8 0xb9 ->      CODE -> 0xbd entry8+12
                               entry7+64 0x133 ->      CODE -> 0x13f entry7+76
                               entry7+72 0x13b ->      CODE -> 0x143 entry7+80
                               entry5+88 0x302 ->      CODE -> 0x312 entry5+104
                                entry4+8 0x3be ->      CODE -> 0x3ce entry4+24
                               entry4+32 0x3d6 ->      CODE -> 0x3e6 entry4+48
                               entry4+52 0x3ea ->      CODE -> 0x3fa entry4+68
                               entry4+72 0x3fe ->      CODE -> 0x40a entry4+84
                               entry2+24 0x480 ->      CODE -> 0x488 entry2+32
                              entry0+116 0x659 ->      CODE -> 0x65d entry0+120
            ;-- section.fcn.0xa6.code:
/ entry8();
|           0x000000b1      kshort r1 0                                ; [58] -r-x section size 16 named fcn.0xa6.code
|           0x000000b5      fnew  r2 0
|       ,=< 0x000000b9      uclo  r0 32768
|       |   ; CODE XREF from entry8 @ 0xb9
\       `-> 0x000000bd      ret1  r2 2
EOF
RUN

NAME=LUAJIT: Function boundary small file
FILE=bins/luaJIT/bin/find_string_2.1.ljbc
CMDS=<<EOF
aa
pd 10
afl
axl
pdf
EOF
EXPECT=<<EOF
            ;-- section.fcn.0x1a.code:
/ entry0();
|           0x00000026      gget  r0 0                                 ; [02] -r-x section size 140 named fcn.0x1a.code
|           0x0000002a      tgets r0 0 1
|           0x0000002e      gget  r2 2
|           0x00000032      kstr  r3 3
|           0x00000036      call  r0 3 3
|           0x0000003a      gget  r2 4
|           0x0000003e      kstr  r4 5
|           0x00000042      gget  r5 0
|           0x00000046      tgets r5 5 6
|           0x0000004a      gget  r7 2
0x00000026    7 140          entry0
                               entry0+80 0x76 ->      CODE -> 0x86 entry0+96
                              entry0+120 0x9e ->      CODE -> 0xae entry0+136
            ;-- section.fcn.0x1a.code:
/ entry0();
|           0x00000026      gget  r0 0                                 ; [02] -r-x section size 140 named fcn.0x1a.code
|           0x0000002a      tgets r0 0 1
|           0x0000002e      gget  r2 2
|           0x00000032      kstr  r3 3
|           0x00000036      call  r0 3 3
|           0x0000003a      gget  r2 4
|           0x0000003e      kstr  r4 5
|           0x00000042      gget  r5 0
|           0x00000046      tgets r5 5 6
|           0x0000004a      gget  r7 2
|           0x0000004e      mov   r8 r0
|           0x00000052      mov   r9 r1
|           0x00000056      call  r5 0 4
|           0x0000005a      callm r2 1 1
|           0x0000005e      gget  r2 0
|           0x00000062      tgets r2 2 1
|           0x00000066      gget  r4 2
|           0x0000006a      kstr  r5 7
|           0x0000006e      call  r2 3 3
|       ,=< 0x00000072      isf   r0 r2
|      ,==< 0x00000076      jmp   r4 3
|      |`-> 0x0000007a      gget  r4 4
|      |    0x0000007e      kstr  r6 8
|      |    0x00000082      call  r4 1 2
|      |    ; CODE XREF from entry0 @ 0x76
|      `--> 0x00000086      gget  r4 0
|           0x0000008a      tgets r4 4 1
|           0x0000008e      gget  r6 2
|           0x00000092      kstr  r7 9
|           0x00000096      call  r4 3 3
|       ,=< 0x0000009a      ist   r0 r4
|      ,==< 0x0000009e      jmp   r6 3
|      |`-> 0x000000a2      gget  r6 4
|      |    0x000000a6      kstr  r8 10
|      |    0x000000aa      call  r6 1 2
|      |    ; CODE XREF from entry0 @ 0x9e
\      `--> 0x000000ae      ret0  r0 1
EOF
RUN

NAME=LUAJIT: Register Profile
FILE=bins/luaJIT/bin/dumb_code_2.1.ljbc
CMDS=<<EOF
ar pc=0x1337
ar r0=0x42
ar pc
ar r0
ar=
EOF
EXPECT=<<EOF
pc = 0x00001337
r0 = 0x00000042
     pc 0x00001337           sp 0x00000000           r0 0x00000042           r1 0x00000000
     r2 0x00000000           r3 0x00000000           r4 0x00000000           r5 0x00000000
     r6 0x00000000           r7 0x00000000           r8 0x00000000           r9 0x00000000
    r10 0x00000000          r11 0x00000000          r12 0x00000000          r13 0x00000000
    r14 0x00000000          r15 0x00000000          r16 0x00000000          r17 0x00000000
    r18 0x00000000          r19 0x00000000          r20 0x00000000          r21 0x00000000
    r22 0x00000000          r23 0x00000000          r24 0x00000000          r25 0x00000000
    r26 0x00000000          r27 0x00000000          r28 0x00000000          r29 0x00000000
    r30 0x00000000          r31 0x00000000          r32 0x00000000          r33 0x00000000
    r34 0x00000000          r35 0x00000000          r36 0x00000000          r37 0x00000000
    r38 0x00000000          r39 0x00000000          r40 0x00000000          r41 0x00000000
    r42 0x00000000          r43 0x00000000          r44 0x00000000          r45 0x00000000
    r46 0x00000000          r47 0x00000000          r48 0x00000000          r49 0x00000000
    r50 0x00000000          r51 0x00000000          r52 0x00000000          r53 0x00000000
    r54 0x00000000          r55 0x00000000          r56 0x00000000          r57 0x00000000
    r58 0x00000000          r59 0x00000000          r60 0x00000000          r61 0x00000000
    r62 0x00000000          r63 0x00000000          r64 0x00000000          r65 0x00000000
    r66 0x00000000          r67 0x00000000          r68 0x00000000          r69 0x00000000
    r70 0x00000000          r71 0x00000000          r72 0x00000000          r73 0x00000000
    r74 0x00000000          r75 0x00000000          r76 0x00000000          r77 0x00000000
    r78 0x00000000          r79 0x00000000          r80 0x00000000          r81 0x00000000
    r82 0x00000000          r83 0x00000000          r84 0x00000000          r85 0x00000000
    r86 0x00000000          r87 0x00000000          r88 0x00000000          r89 0x00000000
    r90 0x00000000          r91 0x00000000          r92 0x00000000          r93 0x00000000
    r94 0x00000000          r95 0x00000000          r96 0x00000000          r97 0x00000000
    r98 0x00000000          r99 0x00000000         r100 0x00000000         r101 0x00000000
   r102 0x00000000         r103 0x00000000         r104 0x00000000         r105 0x00000000
   r106 0x00000000         r107 0x00000000         r108 0x00000000         r109 0x00000000
   r110 0x00000000         r111 0x00000000         r112 0x00000000         r113 0x00000000
   r114 0x00000000         r115 0x00000000         r116 0x00000000         r117 0x00000000
   r118 0x00000000         r119 0x00000000         r120 0x00000000         r121 0x00000000
   r122 0x00000000         r123 0x00000000         r124 0x00000000         r125 0x00000000
   r126 0x00000000         r127 0x00000000         r128 0x00000000         r129 0x00000000
   r130 0x00000000         r131 0x00000000         r132 0x00000000         r133 0x00000000
   r134 0x00000000         r135 0x00000000         r136 0x00000000         r137 0x00000000
   r138 0x00000000         r139 0x00000000         r140 0x00000000         r141 0x00000000
   r142 0x00000000         r143 0x00000000         r144 0x00000000         r145 0x00000000
   r146 0x00000000         r147 0x00000000         r148 0x00000000         r149 0x00000000
   r150 0x00000000         r151 0x00000000         r152 0x00000000         r153 0x00000000
   r154 0x00000000         r155 0x00000000         r156 0x00000000         r157 0x00000000
   r158 0x00000000         r159 0x00000000         r160 0x00000000         r161 0x00000000
   r162 0x00000000         r163 0x00000000         r164 0x00000000         r165 0x00000000
   r166 0x00000000         r167 0x00000000         r168 0x00000000         r169 0x00000000
   r170 0x00000000         r171 0x00000000         r172 0x00000000         r173 0x00000000
   r174 0x00000000         r175 0x00000000         r176 0x00000000         r177 0x00000000
   r178 0x00000000         r179 0x00000000         r180 0x00000000         r181 0x00000000
   r182 0x00000000         r183 0x00000000         r184 0x00000000         r185 0x00000000
   r186 0x00000000         r187 0x00000000         r188 0x00000000         r189 0x00000000
   r190 0x00000000         r191 0x00000000         r192 0x00000000         r193 0x00000000
   r194 0x00000000         r195 0x00000000         r196 0x00000000         r197 0x00000000
   r198 0x00000000         r199 0x00000000         r200 0x00000000         r201 0x00000000
   r202 0x00000000         r203 0x00000000         r204 0x00000000         r205 0x00000000
   r206 0x00000000         r207 0x00000000         r208 0x00000000         r209 0x00000000
   r210 0x00000000         r211 0x00000000         r212 0x00000000         r213 0x00000000
   r214 0x00000000         r215 0x00000000         r216 0x00000000         r217 0x00000000
   r218 0x00000000         r219 0x00000000         r220 0x00000000         r221 0x00000000
   r222 0x00000000         r223 0x00000000         r224 0x00000000         r225 0x00000000
   r226 0x00000000         r227 0x00000000         r228 0x00000000         r229 0x00000000
   r230 0x00000000         r231 0x00000000         r232 0x00000000         r233 0x00000000
   r234 0x00000000         r235 0x00000000         r236 0x00000000         r237 0x00000000
   r238 0x00000000         r239 0x00000000         r240 0x00000000         r241 0x00000000
   r242 0x00000000         r243 0x00000000         r244 0x00000000         r245 0x00000000
   r246 0x00000000         r247 0x00000000         r248 0x00000000         r249 0x00000000
   r250 0x00000000         r251 0x00000000         r252 0x00000000         r253 0x00000000
   r254 0x00000000         r255 0x00000000      
EOF
RUN