Sam Clegg | 064e990 | 2020-05-12 00:39:04 | [diff] [blame] | 1 | # RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s |
| 2 | # RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t2.o %S/Inputs/sig_mismatch.s |
| 3 | # RUN: wasm-ld --relocatable %t.o %t2.o -o %t.wasm |
| 4 | # RUN: obj2yaml %t.wasm | FileCheck %s |
| 5 | |
| 6 | # Regression test for handling of signature mismatches (variant function |
| 7 | # symbols) and relocatable output. This issue only occurred when the undefined |
| 8 | # function was seen first and the defined function was referenced within the |
| 9 | # the defining file (see %S/Inputs/sig_mismatch.s). |
| 10 | |
| 11 | .globl _start |
| 12 | _start: |
| 13 | .functype _start () -> () |
| 14 | i32.const 1 |
| 15 | i64.const 2 |
| 16 | i32.const 3 |
| 17 | call foo |
| 18 | end_function |
| 19 | |
| 20 | .functype foo (i32, i64, i32) -> (i32) |
| 21 | |
| 22 | # CHECK: - Type: CUSTOM |
| 23 | # CHECK-NEXT: Name: linking |
| 24 | # CHECK-NEXT: Version: 2 |
| 25 | # CHECK-NEXT: SymbolTable: |
| 26 | # CHECK-NEXT: - Index: 0 |
| 27 | # CHECK-NEXT: Kind: FUNCTION |
| 28 | # CHECK-NEXT: Name: _start |
| 29 | # CHECK-NEXT: Flags: [ ] |
| 30 | # CHECK-NEXT: Function: 1 |
| 31 | # CHECK-NEXT: - Index: 1 |
| 32 | # CHECK-NEXT: Kind: FUNCTION |
| 33 | # CHECK-NEXT: Name: foo |
| 34 | # CHECK-NEXT: Flags: [ ] |
| 35 | # CHECK-NEXT: Function: 2 |
| 36 | # CHECK-NEXT: - Index: 2 |
| 37 | # CHECK-NEXT: Kind: FUNCTION |
| 38 | # CHECK-NEXT: Name: call_foo |
| 39 | # CHECK-NEXT: Flags: [ ] |
| 40 | # CHECK-NEXT: Function: 3 |
| 41 | # CHECK-NEXT: - Index: 3 |
| 42 | # CHECK-NEXT: Kind: FUNCTION |
| 43 | # CHECK-NEXT: Name: 'signature_mismatch:foo' |
| 44 | # CHECK-NEXT: Flags: [ BINDING_LOCAL ] |
| 45 | # CHECK-NEXT: Function: 0 |
| 46 | # CHECK-NEXT: - Type: CUSTOM |
| 47 | # CHECK-NEXT: Name: name |
| 48 | # CHECK-NEXT: FunctionNames: |
| 49 | # CHECK-NEXT: - Index: 0 |
| 50 | # CHECK-NEXT: Name: 'signature_mismatch:foo' |
| 51 | # CHECK-NEXT: - Index: 1 |
| 52 | # CHECK-NEXT: Name: _start |
| 53 | # CHECK-NEXT: - Index: 2 |
| 54 | # CHECK-NEXT: Name: foo |
| 55 | # CHECK-NEXT: - Index: 3 |
| 56 | # CHECK-NEXT: Name: call_foo |
| 57 | # CHECK-NEXT:... |