llvm/lld/test/wasm/shared-needed.s

# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s
# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %p/Inputs/ret32.s -o %t.ret32.o

# RUN: wasm-ld -shared --experimental-pic -o %t.ret32.so %t.ret32.o
# RUN: obj2yaml %t.ret32.so | FileCheck %s -check-prefix=SO1

# Without linking against the ret32.so shared object we expect an undefined
# symbol error

# RUN: not wasm-ld -shared --experimental-pic -o %t.so %t.o 2>&1 | FileCheck %s --check-prefix=ERROR
# ERROR: undefined symbol: ret32

# RUN: wasm-ld -shared --experimental-pic -o %t.so %t.o %t.ret32.so
# RUN: obj2yaml %t.so | FileCheck %s -check-prefix=SO2


.globl foo
.globl data

.functype ret32 (f32) -> (i32)

foo:
  .functype foo (f32) -> (i32)
  local.get 0
  call ret32
  end_function

.section .data,"",@
data:
 .p2align 2
 .int32 0
 .size data,4


# SO1:      Sections:
# SO1-NEXT:   - Type:            CUSTOM
# SO1-NEXT:     Name:            dylink.0
# SO1-NEXT:     MemorySize:      0
# SO1-NEXT:     MemoryAlignment: 0
# SO1-NEXT:     TableSize:       0
# SO1-NEXT:     TableAlignment:  0
# SO1-NEXT:     Needed:          []
# SO1-NEXT:   - Type:            TYPE

# SO2:      Sections:
# SO2-NEXT:   - Type:            CUSTOM
# SO2-NEXT:     Name:            dylink.0
# SO2-NEXT:     MemorySize:      4
# SO2-NEXT:     MemoryAlignment: 2
# SO2-NEXT:     TableSize:       0
# SO2-NEXT:     TableAlignment:  0
# SO2-NEXT:     Needed:
# SO2-NEXT:       - shared-needed.s.tmp.ret32.so
# SO2-NEXT:   - Type:            TYPE