# 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