# Test in default mode # RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s # RUN: not wasm-ld --export=missing -o %t.wasm %t.o 2>&1 | FileCheck -check-prefix=CHECK-ERROR %s # RUN: wasm-ld --export=hidden_function -o %t.wasm %t.o # RUN: obj2yaml %t.wasm | FileCheck %s # Now test in Emscripten mode # RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-emscripten -o %t.o %s # RUN: not wasm-ld --export=missing -o %t.wasm %t.o 2>&1 | FileCheck -check-prefix=CHECK-ERROR %s # RUN: wasm-ld --export=hidden_function -o %t.wasm %t.o # RUN: obj2yaml %t.wasm | FileCheck %s --check-prefixes=CHECK,EMSCRIPTEN # Not exported by default, but forced via commandline .hidden hidden_function .globl hidden_function hidden_function: .functype hidden_function () -> (i32) i32.const 0 end_function # Not exported by default .globl default_function default_function: .functype default_function () -> (i32) i32.const 0 end_function # Exported in emscripten mode which treats .no_dead_strip as a signal to export .no_dead_strip used_function .globl used_function used_function: .functype used_function () -> (i32) i32.const 0 end_function # Exported by default .globl _start _start: .functype _start () -> () end_function # CHECK-ERROR: error: symbol exported via --export not found: missing # CHECK-NOT: - Name: default_function # CHECK: - Type: EXPORT # CHECK-NEXT: Exports: # CHECK-NEXT: - Name: memory # CHECK-NEXT: Kind: MEMORY # CHECK-NEXT: Index: 0 # CHECK-NEXT: - Name: hidden_function # CHECK-NEXT: Kind: FUNCTION # CHECK-NEXT: Index: 0 # EMSCRIPTEN-NEXT: - Name: used_function # EMSCRIPTEN-NEXT: Kind: FUNCTION # EMSCRIPTEN-NEXT: Index: 1 # CHECK-NEXT: - Name: _start # CHECK-NEXT: Kind: FUNCTION # CHECK-NEXT: Index: 2 # CHECK-NEXT: - Type: CODE