| # RUN: llvm-mc -mattr=+reference-types -triple=wasm32-unknown-unknown -filetype=obj -o %t.o %s |
| # RUN: wasm-ld --allow-undefined -o %t1.wasm %t.o |
| # RUN: obj2yaml %t1.wasm | FileCheck %s |
| |
| .tabletype t1, funcref |
| .import_module t1, env |
| .import_name t1, t |
| .globl t1 |
| |
| # Same import module/name/type as `t1`, should be de-duped. |
| .tabletype t2, funcref |
| .import_module t2, env |
| .import_name t2, t |
| .globl t2 |
| |
| # Imported as an externref instead of funcref, so should not be de-duped. |
| .tabletype t3, externref |
| .import_module t3, env |
| .import_name t3, t |
| .globl t3 |
| |
| .globl _start |
| _start: |
| .functype _start () -> () |
| |
| # Read from `t1` |
| i32.const 0 |
| table.get t1 |
| drop |
| |
| # Read from `t2` |
| i32.const 0 |
| table.get t2 |
| drop |
| |
| # Read from `t3` |
| i32.const 0 |
| table.get t3 |
| drop |
| |
| end_function |
| |
| ## XXX: the second imported table has index 1, not 0. I've verified by hand |
| ## (with `wasm2wat`) that the resulting Wasm file is correct: `t3` does end up |
| ## at index 1 and our `table.get` instructions are using the proper table index |
| ## immediates. This is also asserted (less legibly) in the hexdump of the code |
| ## body below. It looks like there's a bug in how `obj2yaml` disassembles |
| ## multiple table imports. |
| |
| # CHECK: - Type: IMPORT |
| # CHECK-NEXT: Imports: |
| # CHECK-NEXT: - Module: env |
| # CHECK-NEXT: Field: t |
| # CHECK-NEXT: Kind: TABLE |
| # CHECK-NEXT: Table: |
| # CHECK-NEXT: Index: 0 |
| # CHECK-NEXT: ElemType: FUNCREF |
| # CHECK-NEXT: Limits: |
| # CHECK-NEXT: Minimum: 0x0 |
| # CHECK-NEXT: - Module: env |
| # CHECK-NEXT: Field: t |
| # CHECK-NEXT: Kind: TABLE |
| # CHECK-NEXT: Table: |
| # CHECK-NEXT: Index: 0 |
| # CHECK-NEXT: ElemType: EXTERNREF |
| # CHECK-NEXT: Limits: |
| # CHECK-NEXT: Minimum: 0x0 |
| # CHECK-NEXT: - Type: |
| |
| # CHECK: - Type: CODE |
| # CHECK-NEXT: Functions: |
| # CHECK-NEXT: - Index: 0 |
| # CHECK-NEXT: Locals: [] |
| # CHECK-NEXT: Body: 41002580808080001A41002580808080001A41002581808080001A0B |
| # CHECK-NEXT: - Type: |