brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 7471ebb Raw
155 lines · plain
1; RUN: llc -mcpu=mvp -filetype=obj -o %t.o %s2; RUN: llc -mcpu=mvp -filetype=obj %S/Inputs/global-ctor-dtor.ll -o %t.global-ctor-dtor.o3 4target triple = "wasm32-unknown-unknown"5 6define hidden void @func1() {7entry:8  ret void9}10 11define hidden void @func2() {12entry:13  ret void14}15 16define hidden void @func3() {17entry:18  ret void19}20 21define hidden void @func4() {22entry:23  ret void24}25 26declare hidden void @externCtor()27declare hidden void @externDtor()28declare hidden void @__wasm_call_ctors()29declare i32 @__cxa_atexit(i32 %func, i32 %arg, i32 %dso_handle)30 31define hidden void @_start() {32entry:33  call void @__wasm_call_ctors();34  ret void35}36 37@llvm.global_ctors = appending global [4 x { i32, ptr, ptr }] [38  { i32, ptr, ptr } { i32 1001, ptr @func1, ptr null },39  { i32, ptr, ptr } { i32 101, ptr @func1, ptr null },40  { i32, ptr, ptr } { i32 101, ptr @func2, ptr null },41  { i32, ptr, ptr } { i32 4000, ptr @externCtor, ptr null }42]43 44@llvm.global_dtors = appending global [4 x { i32, ptr, ptr }] [45  { i32, ptr, ptr } { i32 1001, ptr @func3, ptr null },46  { i32, ptr, ptr } { i32 101, ptr @func3, ptr null },47  { i32, ptr, ptr } { i32 101, ptr @func4, ptr null },48  { i32, ptr, ptr } { i32 4000, ptr @externDtor, ptr null }49]50 51; RUN: wasm-ld --allow-undefined %t.o %t.global-ctor-dtor.o -o %t.wasm52; RUN: obj2yaml %t.wasm | FileCheck %s53 54; CHECK:        - Type:            IMPORT55; CHECK-NEXT:     Imports:56; CHECK-NEXT:       - Module:          env57; CHECK-NEXT:         Field:           __cxa_atexit58; CHECK-NEXT:         Kind:            FUNCTION59; CHECK-NEXT:         SigIndex:        060; CHECK-NEXT:       - Module:          env61; CHECK-NEXT:         Field:           externDtor62; CHECK-NEXT:         Kind:            FUNCTION63; CHECK-NEXT:         SigIndex:        164; CHECK-NEXT:       - Module:          env65; CHECK-NEXT:         Field:           externCtor66; CHECK-NEXT:         Kind:            FUNCTION67; CHECK-NEXT:         SigIndex:        168; CHECK:        - Type:            ELEM69; CHECK-NEXT:     Segments:70; CHECK-NEXT:       - Offset:71; CHECK-NEXT:           Opcode:          I32_CONST72; CHECK-NEXT:           Value:           173; CHECK-NEXT:         Functions:       [ 9, 11, 13, 17, 19, 21 ]74; CHECK-NEXT:   - Type:            CODE75; CHECK-NEXT:     Functions:76; CHECK-NEXT:       - Index:           377; CHECK-NEXT:         Locals:78; CHECK-NEXT:         Body:            10041005100A100F1012100F10141004100C100F10161002100E0B79; CHECK:            - Index:           2280; CHECK-NEXT:         Locals:81; CHECK-NEXT:         Body:            02404186808080004100418080848000108080808000450D00000B0B82; CHECK-NEXT:   - Type:            CUSTOM83; CHECK-NEXT:     Name:            name84; CHECK-NEXT:     FunctionNames:85; CHECK-NEXT:       - Index:           086; CHECK-NEXT:         Name:            __cxa_atexit87; CHECK-NEXT:       - Index:           188; CHECK-NEXT:         Name:            externDtor89; CHECK-NEXT:       - Index:           290; CHECK-NEXT:         Name:            externCtor91; CHECK-NEXT:       - Index:           392; CHECK-NEXT:         Name:            __wasm_call_ctors93; CHECK-NEXT:       - Index:           494; CHECK-NEXT:         Name:            func195; CHECK-NEXT:       - Index:           596; CHECK-NEXT:         Name:            func297; CHECK-NEXT:       - Index:           698; CHECK-NEXT:         Name:            func399; CHECK-NEXT:       - Index:           7100; CHECK-NEXT:         Name:            func4101; CHECK-NEXT:       - Index:           8102; CHECK-NEXT:         Name:            _start103; CHECK-NEXT:       - Index:           9104; CHECK-NEXT:         Name:            .Lcall_dtors.101105; CHECK-NEXT:       - Index:           10106; CHECK-NEXT:         Name:            .Lregister_call_dtors.101107; CHECK-NEXT:       - Index:           11108; CHECK-NEXT:         Name:            .Lcall_dtors.1001109; CHECK-NEXT:       - Index:           12110; CHECK-NEXT:         Name:            .Lregister_call_dtors.1001111; CHECK-NEXT:       - Index:           13112; CHECK-NEXT:         Name:            .Lcall_dtors.4000113; CHECK-NEXT:       - Index:           14114; CHECK-NEXT:         Name:            .Lregister_call_dtors.4000115; CHECK-NEXT:       - Index:           15116; CHECK-NEXT:         Name:            myctor117; CHECK-NEXT:       - Index:           16118; CHECK-NEXT:         Name:            mydtor119; CHECK-NEXT:       - Index:           17120; CHECK-NEXT:         Name:            .Lcall_dtors.101121; CHECK-NEXT:       - Index:           18122; CHECK-NEXT:         Name:            .Lregister_call_dtors.101123; CHECK-NEXT:       - Index:           19124; CHECK-NEXT:         Name:            .Lcall_dtors.202125; CHECK-NEXT:       - Index:           20126; CHECK-NEXT:         Name:            .Lregister_call_dtors.202127; CHECK-NEXT:       - Index:           21128; CHECK-NEXT:         Name:            .Lcall_dtors.2002129; CHECK-NEXT:       - Index:           22130; CHECK-NEXT:         Name:            .Lregister_call_dtors.2002131; CHECK-NEXT:     GlobalNames:132; CHECK-NEXT:       - Index:           0133; CHECK-NEXT:         Name:            __stack_pointer134; CHECK-NEXT: ...135 136; RUN: wasm-ld -r %t.o %t.global-ctor-dtor.o -o %t.reloc.wasm137; RUN: llvm-readobj --symbols --sections %t.reloc.wasm | FileCheck -check-prefix=RELOC %s138 139; RELOC:       Name: linking140; RELOC-NEXT:  InitFunctions [141; RELOC-NEXT:    0 (priority=101)142; RELOC-NEXT:    1 (priority=101)143; RELOC-NEXT:    15 (priority=101)144; RELOC-NEXT:    11 (priority=101)145; RELOC-NEXT:    21 (priority=101)146; RELOC-NEXT:    11 (priority=202)147; RELOC-NEXT:    23 (priority=202)148; RELOC-NEXT:    0 (priority=1001)149; RELOC-NEXT:    17 (priority=1001)150; RELOC-NEXT:    11 (priority=2002)151; RELOC-NEXT:    25 (priority=2002)152; RELOC-NEXT:    9 (priority=4000)153; RELOC-NEXT:    19 (priority=4000)154; RELOC-NEXT:  ]155