1target triple = "wasm32-unknown-unknown"
2
3@a = hidden global [6 x i8] c"hello\00", align 1
4@b = hidden global [8 x i8] c"goodbye\00", align 1
5@c = hidden global [9 x i8] c"whatever\00", align 1
6@d = hidden global i32 42, align 4
7
8@e = private constant [9 x i8] c"constant\00", align 1
9@f = private constant i8 43, align 4
10
11; RUN: llc -mattr=+bulk-memory -filetype=obj %s -o %t.o
12
13; RUN: wasm-ld -no-gc-sections --no-entry -o %t.merged.wasm %t.o
14; RUN: obj2yaml %t.merged.wasm | FileCheck %s --check-prefix=MERGE
15
16; MERGE-LABEL: - Type:            DATA
17; MERGE-NEXT:    Segments:
18; MERGE-NEXT:      - SectionOffset:   7
19; MERGE-NEXT:        InitFlags:       0
20; MERGE-NEXT:        Offset:
21; MERGE:             Content:         68656C6C6F00676F6F6462796500776861746576657200002A000000
22; MERGE-NEXT:      - SectionOffset:   41
23; MERGE-NEXT:        InitFlags:       0
24; MERGE-NEXT:        Offset:
25; MERGE:             Content:         636F6E7374616E74000000002B
26; MERGE-NEXT:  - Type:            CUSTOM
27; MERGE-NEXT:    Name:            name
28; MERGE-NEXT:    FunctionNames:
29; MERGE-NEXT:      - Index:           0
30; MERGE-NEXT:        Name:            __wasm_call_ctors
31; MERGE-NOT:       - Index:
32
33; RUN: wasm-ld -no-gc-sections --no-entry --no-merge-data-segments -o %t.separate.wasm %t.o
34; RUN: obj2yaml %t.separate.wasm | FileCheck %s --check-prefix=SEPARATE
35
36; SEPARATE-NOT:                  DATACOUNT
37; SEPARATE-LABEL: - Type:            DATA
38; SEPARATE-NEXT:    Segments:
39; SEPARATE-NEXT:      - SectionOffset:   7
40; SEPARATE-NEXT:        InitFlags:       0
41; SEPARATE-NEXT:        Offset:
42; SEPARATE:             Content:         68656C6C6F00
43; SEPARATE-NEXT:      - SectionOffset:   19
44; SEPARATE-NEXT:        InitFlags:       0
45; SEPARATE-NEXT:        Offset:
46; SEPARATE:             Content:         676F6F6462796500
47; SEPARATE-NEXT:      - SectionOffset:   33
48; SEPARATE-NEXT:        InitFlags:       0
49; SEPARATE-NEXT:        Offset:
50; SEPARATE:             Content:         '776861746576657200'
51; SEPARATE-NEXT:      - SectionOffset:   48
52; SEPARATE-NEXT:        InitFlags:       0
53; SEPARATE-NEXT:        Offset:
54; SEPARATE:             Content:         2A000000
55; SEPARATE-NEXT:      - SectionOffset:   58
56; SEPARATE-NEXT:        InitFlags:       0
57; SEPARATE-NEXT:        Offset:
58; SEPARATE:             Content:         636F6E7374616E7400
59; SEPARATE-NEXT:      - SectionOffset:   73
60; SEPARATE-NEXT:        InitFlags:       0
61; SEPARATE-NEXT:        Offset:
62; SEPARATE:             Content:         2B
63; SEPARATE-NEXT:  - Type:            CUSTOM
64; SEPARATE-NEXT:    Name:            name
65; SEPARATE-NEXT:    FunctionNames:
66; SEPARATE-NEXT:      - Index:           0
67; SEPARATE-NEXT:        Name:            __wasm_call_ctors
68; SEPARATE-NOT:       - Index:
69
70; RUN: wasm-ld -no-gc-sections --no-entry --passive-segments -o %t.merged.passive.wasm %t.o
71; RUN: obj2yaml %t.merged.passive.wasm | FileCheck %s --check-prefix=PASSIVE-MERGE
72
73; PASSIVE-MERGE-LABEL: - Type:            DATACOUNT
74; PASSIVE-MERGE-NEXT:    Count:           2
75; PASSIVE-MERGE-LABEL: - Type:            DATA
76; PASSIVE-MERGE-NEXT:    Segments:
77; PASSIVE-MERGE-NEXT:      - SectionOffset:   3
78; PASSIVE-MERGE-NEXT:        InitFlags:       1
79; PASSIVE-MERGE-NEXT:        Content:         68656C6C6F00676F6F6462796500776861746576657200002A000000
80; PASSIVE-MERGE-NEXT:      - SectionOffset:   33
81; PASSIVE-MERGE-NEXT:        InitFlags:       1
82; PASSIVE-MERGE-NEXT:        Content:         636F6E7374616E74000000002B
83; PASSIVE-MERGE-NEXT:  - Type:            CUSTOM
84; PASSIVE-MERGE-NEXT:    Name:            name
85; PASSIVE-MERGE-NEXT:    FunctionNames:
86; PASSIVE-MERGE-NEXT:      - Index:           0
87; PASSIVE-MERGE-NEXT:        Name:            __wasm_call_ctors
88; PASSIVE-MERGE-NEXT:      - Index:           1
89; PASSIVE-MERGE-NEXT:        Name:            __wasm_init_memory
90; PASSIVE-MERGE-NOT:       - Index:
91
92; RUN: wasm-ld -no-gc-sections --no-entry --passive-segments -no-merge-data-segments -o %t.separate.passive.wasm %t.o
93; RUN: obj2yaml %t.separate.passive.wasm | FileCheck %s --check-prefix=PASSIVE-SEPARATE
94
95; PASSIVE-SEPARATE-LABEL: - Type:            DATACOUNT
96; PASSIVE-SEPARATE-NEXT:    Count:           6
97; PASSIVE-SEPARATE-LABEL: - Type:            DATA
98; PASSIVE-SEPARATE-NEXT:    Segments:
99; PASSIVE-SEPARATE-NEXT:      - SectionOffset:   3
100; PASSIVE-SEPARATE-NEXT:        InitFlags:       1
101; PASSIVE-SEPARATE-NEXT:        Content:         68656C6C6F00
102; PASSIVE-SEPARATE-NEXT:      - SectionOffset:   11
103; PASSIVE-SEPARATE-NEXT:        InitFlags:       1
104; PASSIVE-SEPARATE-NEXT:        Content:         676F6F6462796500
105; PASSIVE-SEPARATE-NEXT:      - SectionOffset:   21
106; PASSIVE-SEPARATE-NEXT:        InitFlags:       1
107; PASSIVE-SEPARATE-NEXT:        Content:         '776861746576657200'
108; PASSIVE-SEPARATE-NEXT:      - SectionOffset:   32
109; PASSIVE-SEPARATE-NEXT:        InitFlags:       1
110; PASSIVE-SEPARATE-NEXT:        Content:         2A000000
111; PASSIVE-SEPARATE-NEXT:      - SectionOffset:   38
112; PASSIVE-SEPARATE-NEXT:        InitFlags:       1
113; PASSIVE-SEPARATE-NEXT:        Content:         636F6E7374616E7400
114; PASSIVE-SEPARATE-NEXT:      - SectionOffset:   49
115; PASSIVE-SEPARATE-NEXT:        InitFlags:       1
116; PASSIVE-SEPARATE-NEXT:        Content:         2B
117; PASSIVE-SEPARATE-NEXT:    - Type:            CUSTOM
118; PASSIVE-SEPARATE-NEXT:      Name:            name
119; PASSIVE-SEPARATE-NEXT:      FunctionNames:
120; PASSIVE-SEPARATE-NEXT:        - Index:           0
121; PASSIVE-SEPARATE-NEXT:          Name:            __wasm_call_ctors
122; PASSIVE-SEPARATE-NEXT:        - Index:           1
123; PASSIVE-SEPARATE-NEXT:          Name:            __wasm_init_memory
124; PASSIVE-SEPARATE-NOT:         - Index
125