1# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s
2# RUN: wasm-ld --export=_Z3fooi --demangle -o %t_demangle.wasm %t.o
3# RUN: obj2yaml %t_demangle.wasm | FileCheck --check-prefixes=CHECK,DEMANGLE %s
4# RUN: wasm-ld --export=_Z3fooi --no-demangle -o %t_nodemangle.wasm %t.o
5# RUN: obj2yaml %t_nodemangle.wasm | FileCheck --check-prefixes=CHECK,MANGLE %s
6
7# Check that the EXPORT name is still mangled, but that the "name" custom
8# section contains the unmangled name.
9
10.globl _start
11.globl _Z3fooi
12.weak _Z3bari
13
14.functype _Z3bari (i32) -> ()
15
16_Z3fooi:
17  .functype _Z3fooi (i32) -> ()
18  end_function
19
20_start:
21  .functype _start () -> ()
22  i32.const 1
23  call _Z3fooi
24  i32.const 1
25  call _Z3bari
26  end_function
27
28# CHECK:        - Type:            EXPORT
29# CHECK-NEXT:     Exports:
30# CHECK-NEXT:       - Name:            memory
31# CHECK-NEXT:         Kind:            MEMORY
32# CHECK-NEXT:         Index:           0
33# CHECK-NEXT:       - Name:            _start
34# CHECK-NEXT:         Kind:            FUNCTION
35# CHECK-NEXT:         Index:           1
36# CHECK-NEXT:       - Name:            _Z3fooi
37# CHECK-NEXT:         Kind:            FUNCTION
38# CHECK-NEXT:         Index:           2
39# CHECK-NEXT:   - Type:            CODE
40# CHECK-NEXT:     Functions:
41# CHECK-NEXT:       - Index:           0
42# CHECK-NEXT:         Locals:
43# CHECK-NEXT:         Body:            000B
44# CHECK-NEXT:       - Index:           1
45# CHECK-NEXT:         Locals:
46# CHECK-NEXT:         Body:            410110828080800041011080808080000B
47# CHECK-NEXT:       - Index:           2
48# CHECK-NEXT:         Locals:
49# CHECK-NEXT:         Body:            0B
50# CHECK-NEXT:   - Type:            CUSTOM
51# CHECK-NEXT:     Name:            name
52# CHECK-NEXT:     FunctionNames:
53# CHECK-NEXT:       - Index:           0
54# DEMANGLE-NEXT:      Name:            'undefined_weak:bar(int)'
55# MANGLE-NEXT:        Name:            'undefined_weak:_Z3bari'
56# CHECK-NEXT:       - Index:           1
57# CHECK-NEXT:         Name:            _start
58# CHECK-NEXT:       - Index:           2
59# DEMANGLE-NEXT:      Name:            'foo(int)'
60# MANGLE-NEXT:        Name:            _Z3fooi
61# CHECK-NEXT:     GlobalNames:
62# CHECK-NEXT:       - Index:           0
63# CHECK-NEXT:         Name:            __stack_pointer
64# CHECK-NEXT: ...
65