| # RUN: yaml2obj %s | llvm-readobj --symbols | FileCheck %s |
| |
| # Test symbols with custom import module and name attributes. |
| |
| --- !WASM |
| FileHeader: |
| Version: 0x00000001 |
| Sections: |
| - Type: TYPE |
| Signatures: |
| - Index: 0 |
| ReturnType: I32 |
| ParamTypes: [] |
| - Index: 1 |
| ReturnType: NORESULT |
| ParamTypes: [] |
| - Type: IMPORT |
| Imports: |
| - Module: env |
| Field: __linear_memory |
| Kind: MEMORY |
| Memory: |
| Initial: 0x00000000 |
| - Module: env |
| Field: __indirect_function_table |
| Kind: TABLE |
| Table: |
| ElemType: FUNCREF |
| Limits: |
| Initial: 0x00000000 |
| - Module: red |
| Field: foo |
| Kind: FUNCTION |
| SigIndex: 1 |
| - Module: env |
| Field: green |
| Kind: FUNCTION |
| SigIndex: 1 |
| - Module: blue |
| Field: purple |
| Kind: FUNCTION |
| SigIndex: 1 |
| - Type: FUNCTION |
| FunctionTypes: [ 0 ] |
| - Type: CODE |
| Relocations: |
| - Type: R_WASM_FUNCTION_INDEX_LEB |
| Index: 1 |
| Offset: 0x00000004 |
| - Type: R_WASM_FUNCTION_INDEX_LEB |
| Index: 2 |
| Offset: 0x0000000A |
| - Type: R_WASM_FUNCTION_INDEX_LEB |
| Index: 3 |
| Offset: 0x00000010 |
| Functions: |
| - Index: 3 |
| Locals: [] |
| Body: 10808080800010818080800010828080800041000B |
| - Type: CUSTOM |
| Name: linking |
| Version: 2 |
| SymbolTable: |
| - Index: 0 |
| Kind: FUNCTION |
| Name: test |
| Flags: [ VISIBILITY_HIDDEN ] |
| Function: 3 |
| - Index: 1 |
| Kind: FUNCTION |
| Name: foo |
| Flags: [ UNDEFINED ] |
| Function: 0 |
| - Index: 2 |
| Kind: FUNCTION |
| Name: bar |
| Flags: [ UNDEFINED, EXPLICIT_NAME ] |
| Function: 1 |
| - Index: 3 |
| Kind: FUNCTION |
| Name: qux |
| Flags: [ UNDEFINED, EXPLICIT_NAME ] |
| Function: 2 |
| - Type: CUSTOM |
| Name: producers |
| Tools: |
| - Name: clang |
| Version: '9.0.0 (trunk 359436)' |
| ... |
| |
| # CHECK: Format: WASM |
| # CHECK-NEXT: Arch: wasm32 |
| # CHECK-NEXT: AddressSize: 32bit |
| # CHECK-NEXT: Symbols [ |
| # CHECK-NEXT: Symbol { |
| # CHECK-NEXT: Name: test |
| # CHECK-NEXT: Type: FUNCTION (0x0) |
| # CHECK-NEXT: Flags [ (0x4) |
| # CHECK-NEXT: VISIBILITY_HIDDEN (0x4) |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: ElementIndex: 0x3 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Symbol { |
| # CHECK-NEXT: Name: foo |
| # CHECK-NEXT: Type: FUNCTION (0x0) |
| # CHECK-NEXT: Flags [ (0x10) |
| # CHECK-NEXT: UNDEFINED (0x10) |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: ImportName: foo |
| # CHECK-NEXT: ImportModule: red |
| # CHECK-NEXT: ElementIndex: 0x0 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Symbol { |
| # CHECK-NEXT: Name: bar |
| # CHECK-NEXT: Type: FUNCTION (0x0) |
| # CHECK-NEXT: Flags [ (0x50) |
| # CHECK-NEXT: EXPLICIT_NAME (0x40) |
| # CHECK-NEXT: UNDEFINED (0x10) |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: ImportName: green |
| # CHECK-NEXT: ImportModule: env |
| # CHECK-NEXT: ElementIndex: 0x1 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Symbol { |
| # CHECK-NEXT: Name: qux |
| # CHECK-NEXT: Type: FUNCTION (0x0) |
| # CHECK-NEXT: Flags [ (0x50) |
| # CHECK-NEXT: EXPLICIT_NAME (0x40) |
| # CHECK-NEXT: UNDEFINED (0x10) |
| # CHECK-NEXT: ] |
| # CHECK-NEXT: ImportName: purple |
| # CHECK-NEXT: ImportModule: blue |
| # CHECK-NEXT: ElementIndex: 0x2 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |