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