llvm-project/llvm/test/tools/llvm-readobj/wasm-imports.test

136 lines
4.0 KiB
Plaintext

# 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: ]