| # REQUIRES: webassembly |
| |
| # RUN: yaml2obj %s -o %t.wasm |
| # RUN: %lldb %t.wasm -o 'dis -n no_locals' -o 'dis -n with_locals' \ |
| # RUN: -o 'b no_locals' -o 'b with_locals' -o 'breakpoint list' \ |
| # RUN: 2>&1 | FileCheck %s |
| |
| # no_locals has zero local declarations (1 byte for the count of 0). |
| # The first instruction should be at <+1>. |
| # CHECK-LABEL: dis -n no_locals |
| # CHECK: {{.*}}`no_locals: |
| # CHECK-NEXT: {{.*}} <+1>: i32.const 42 |
| # CHECK-NEXT: {{.*}} <+3>: return |
| # CHECK-NEXT: {{.*}} <+4>: end |
| |
| # with_locals has one local declaration (1 local of type i32 = 3 bytes). |
| # The first instruction should be at <+3>. |
| # CHECK-LABEL: dis -n with_locals |
| # CHECK: {{.*}}`with_locals: |
| # CHECK-NEXT: {{.*}} <+3>: local.get 0 |
| # CHECK-NEXT: {{.*}} <+5>: local.get 1 |
| # CHECK-NEXT: {{.*}} <+7>: i32.add |
| # CHECK-NEXT: {{.*}} <+8>: local.set 2 |
| # CHECK-NEXT: {{.*}} <+10>: local.get 0 |
| # CHECK-NEXT: {{.*}} <+12>: local.get 1 |
| # CHECK-NEXT: {{.*}} <+14>: return |
| # CHECK-NEXT: {{.*}} <+15>: end |
| |
| # Breakpoints should land at the first instruction. |
| # CHECK-LABEL: breakpoint list |
| # CHECK: where = {{.*}}`no_locals + 1 |
| # CHECK: where = {{.*}}`with_locals + 3 |
| |
| --- !WASM |
| FileHeader: |
| Version: 0x1 |
| Sections: |
| - Type: TYPE |
| Signatures: |
| - Index: 0 |
| ParamTypes: [] |
| ReturnTypes: |
| - I32 |
| - Index: 1 |
| ParamTypes: |
| - I32 |
| - I32 |
| ReturnTypes: |
| - I32 |
| - Type: FUNCTION |
| FunctionTypes: [ 0, 1 ] |
| - Type: CODE |
| Functions: |
| # no_locals: returns 42, no local variables. |
| - Index: 0 |
| Locals: [] |
| Body: 412A0F0B |
| # with_locals: adds two params using a local, has 1 local decl (1 x i32). |
| - Index: 1 |
| Locals: |
| - Type: I32 |
| Count: 1 |
| Body: 200020016A2102200020010F0B |
| - Type: CUSTOM |
| Name: name |
| FunctionNames: |
| - Index: 0 |
| Name: no_locals |
| - Index: 1 |
| Name: with_locals |