1; RUN: llc -mcpu=mvp -filetype=obj %s -o - | obj2yaml | FileCheck %s 2 3target triple = "wasm32-unknown-unknown" 4 5@global1 = global i32 1025, align 8 6 7declare void @func0() 8declare void @func1() 9declare void @func2() 10declare void @func3() 11 12@llvm.global_ctors = appending global [2 x { i32, ptr, ptr }] [ 13 { i32, ptr, ptr } { i32 65535, ptr @func0, ptr null }, 14 { i32, ptr, ptr } { i32 42, ptr @func1, ptr null } 15] 16 17@llvm.global_dtors = appending global [2 x { i32, ptr, ptr }] [ 18 { i32, ptr, ptr } { i32 65535, ptr @func2, ptr null }, 19 { i32, ptr, ptr } { i32 42, ptr @func3, ptr null } 20] 21 22; CHECK: - Type: IMPORT 23; CHECK-NEXT: Imports: 24; CHECK-NEXT: - Module: env 25; CHECK-NEXT: Field: __linear_memory 26; CHECK-NEXT: Kind: MEMORY 27; CHECK-NEXT: Memory: 28; CHECK-NEXT: Minimum: 0x1 29; CHECK-NEXT: - Module: env 30; CHECK-NEXT: Field: func3 31; CHECK-NEXT: Kind: FUNCTION 32; CHECK-NEXT: SigIndex: 1 33; CHECK-NEXT: - Module: env 34; CHECK-NEXT: Field: __cxa_atexit 35; CHECK-NEXT: Kind: FUNCTION 36; CHECK-NEXT: SigIndex: 2 37; CHECK-NEXT: - Module: env 38; CHECK-NEXT: Field: func2 39; CHECK-NEXT: Kind: FUNCTION 40; CHECK-NEXT: SigIndex: 1 41; CHECK-NEXT: - Module: env 42; CHECK-NEXT: Field: func1 43; CHECK-NEXT: Kind: FUNCTION 44; CHECK-NEXT: SigIndex: 1 45; CHECK-NEXT: - Module: env 46; CHECK-NEXT: Field: func0 47; CHECK-NEXT: Kind: FUNCTION 48; CHECK-NEXT: SigIndex: 1 49; CHECK-NEXT: - Module: env 50; CHECK-NEXT: Field: __indirect_function_table 51; CHECK-NEXT: Kind: TABLE 52; CHECK-NEXT: Table: 53; CHECK-NEXT: Index: 0 54; CHECK-NEXT: ElemType: FUNCREF 55; CHECK-NEXT: Limits: 56; CHECK-NEXT: Minimum: 0x2 57; CHECK-NEXT: - Type: FUNCTION 58; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 1 ] 59; CHECK-NEXT: - Type: ELEM 60; CHECK-NEXT: Segments: 61; CHECK-NEXT: - Offset: 62; CHECK-NEXT: Opcode: I32_CONST 63; CHECK-NEXT: Value: 1 64; CHECK-NEXT: Functions: [ 5, 7 ] 65; CHECK-NEXT: - Type: DATACOUNT 66; CHECK-NEXT: Count: 1 67; CHECK-NEXT: - Type: CODE 68; CHECK-NEXT: Relocations: 69; CHECK-NEXT: - Type: R_WASM_FUNCTION_INDEX_LEB 70; CHECK-NEXT: Index: 1 71; CHECK-NEXT: Offset: 0x4 72; CHECK-NEXT: - Type: R_WASM_TABLE_INDEX_SLEB 73; CHECK-NEXT: Index: 0 74; CHECK-NEXT: Offset: 0xF 75; CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_SLEB 76; CHECK-NEXT: Index: 3 77; CHECK-NEXT: Offset: 0x17 78; CHECK-NEXT: - Type: R_WASM_FUNCTION_INDEX_LEB 79; CHECK-NEXT: Index: 4 80; CHECK-NEXT: Offset: 0x1D 81; CHECK-NEXT: - Type: R_WASM_FUNCTION_INDEX_LEB 82; CHECK-NEXT: Index: 6 83; CHECK-NEXT: Offset: 0x2B 84; CHECK-NEXT: - Type: R_WASM_TABLE_INDEX_SLEB 85; CHECK-NEXT: Index: 5 86; CHECK-NEXT: Offset: 0x36 87; CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_SLEB 88; CHECK-NEXT: Index: 3 89; CHECK-NEXT: Offset: 0x3E 90; CHECK-NEXT: - Type: R_WASM_FUNCTION_INDEX_LEB 91; CHECK-NEXT: Index: 4 92; CHECK-NEXT: Offset: 0x44 93; CHECK-NEXT: Functions: 94; CHECK-NEXT: - Index: 5 95; CHECK-NEXT: Locals: 96; CHECK-NEXT: Body: 1080808080000B 97; CHECK-NEXT: - Index: 6 98; CHECK-NEXT: Locals: 99; CHECK-NEXT: Body: 02404181808080004100418080808000108180808000450D00000B0B 100; CHECK-NEXT: - Index: 7 101; CHECK-NEXT: Locals: 102; CHECK-NEXT: Body: 1082808080000B 103; CHECK-NEXT: - Index: 8 104; CHECK-NEXT: Locals: 105; CHECK-NEXT: Body: 02404182808080004100418080808000108180808000450D00000B0B 106; CHECK-NEXT: - Type: DATA 107; CHECK-NEXT: Segments: 108; CHECK-NEXT: - SectionOffset: 6 109; CHECK-NEXT: InitFlags: 0 110; CHECK-NEXT: Offset: 111; CHECK-NEXT: Opcode: I32_CONST 112; CHECK-NEXT: Value: 0 113; CHECK-NEXT: Content: '01040000' 114; CHECK-NEXT: - Type: CUSTOM 115; CHECK-NEXT: Name: linking 116; CHECK-NEXT: Version: 2 117; CHECK-NEXT: SymbolTable: 118; CHECK-NEXT: - Index: 0 119; CHECK-NEXT: Kind: FUNCTION 120; CHECK-NEXT: Name: .Lcall_dtors.42 121; CHECK-NEXT: Flags: [ BINDING_LOCAL ] 122; CHECK-NEXT: Function: 5 123; CHECK-NEXT: - Index: 1 124; CHECK-NEXT: Kind: FUNCTION 125; CHECK-NEXT: Name: func3 126; CHECK-NEXT: Flags: [ UNDEFINED ] 127; CHECK-NEXT: Function: 0 128; CHECK-NEXT: - Index: 2 129; CHECK-NEXT: Kind: FUNCTION 130; CHECK-NEXT: Name: .Lregister_call_dtors.42 131; CHECK-NEXT: Flags: [ BINDING_LOCAL ] 132; CHECK-NEXT: Function: 6 133; CHECK-NEXT: - Index: 3 134; CHECK-NEXT: Kind: DATA 135; CHECK-NEXT: Name: __dso_handle 136; CHECK-NEXT: Flags: [ BINDING_WEAK, VISIBILITY_HIDDEN, UNDEFINED ] 137; CHECK-NEXT: - Index: 4 138; CHECK-NEXT: Kind: FUNCTION 139; CHECK-NEXT: Name: __cxa_atexit 140; CHECK-NEXT: Flags: [ UNDEFINED ] 141; CHECK-NEXT: Function: 1 142; CHECK-NEXT: - Index: 5 143; CHECK-NEXT: Kind: FUNCTION 144; CHECK-NEXT: Name: .Lcall_dtors 145; CHECK-NEXT: Flags: [ BINDING_LOCAL ] 146; CHECK-NEXT: Function: 7 147; CHECK-NEXT: - Index: 6 148; CHECK-NEXT: Kind: FUNCTION 149; CHECK-NEXT: Name: func2 150; CHECK-NEXT: Flags: [ UNDEFINED ] 151; CHECK-NEXT: Function: 2 152; CHECK-NEXT: - Index: 7 153; CHECK-NEXT: Kind: FUNCTION 154; CHECK-NEXT: Name: .Lregister_call_dtors 155; CHECK-NEXT: Flags: [ BINDING_LOCAL ] 156; CHECK-NEXT: Function: 8 157; CHECK-NEXT: - Index: 8 158; CHECK-NEXT: Kind: DATA 159; CHECK-NEXT: Name: global1 160; CHECK-NEXT: Flags: [ ] 161; CHECK-NEXT: Segment: 0 162; CHECK-NEXT: Size: 4 163; CHECK-NEXT: - Index: 9 164; CHECK-NEXT: Kind: FUNCTION 165; CHECK-NEXT: Name: func1 166; CHECK-NEXT: Flags: [ UNDEFINED ] 167; CHECK-NEXT: Function: 3 168; CHECK-NEXT: - Index: 10 169; CHECK-NEXT: Kind: FUNCTION 170; CHECK-NEXT: Name: func0 171; CHECK-NEXT: Flags: [ UNDEFINED ] 172; CHECK-NEXT: Function: 4 173; CHECK-NEXT: SegmentInfo: 174; CHECK-NEXT: - Index: 0 175; CHECK-NEXT: Name: .data.global1 176; CHECK-NEXT: Alignment: 3 177; CHECK-NEXT: Flags: [ ] 178; CHECK-NEXT: InitFunctions: 179; CHECK-NEXT: - Priority: 42 180; CHECK-NEXT: Symbol: 9 181; CHECK-NEXT: - Priority: 42 182; CHECK-NEXT: Symbol: 2 183; CHECK-NEXT: - Priority: 65535 184; CHECK-NEXT: Symbol: 10 185; CHECK-NEXT: - Priority: 65535 186; CHECK-NEXT: Symbol: 7 187; CHECK-NEXT: ... 188