brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.8 KiB · 86e42a7 Raw
304 lines · plain
1; RUN: llc -mcpu=mvp -filetype=obj -o %t.o %s2; RUN: llc -mcpu=mvp -filetype=obj %S/Inputs/weak-alias.ll -o %t2.o3; RUN: wasm-ld --export-dynamic %t.o %t2.o -o %t.wasm4; RUN: obj2yaml %t.wasm | FileCheck %s5 6; Test that weak aliases (alias_fn is a weak alias of direct_fn) are linked correctly7 8target triple = "wasm32-unknown-unknown"9 10declare i32 @alias_fn() local_unnamed_addr #111 12; Function Attrs: nounwind uwtable13define void @_start() local_unnamed_addr #1 {14entry:15  %call = tail call i32 @alias_fn() #216  ret void17}18 19; CHECK:      --- !WASM20; CHECK-NEXT: FileHeader:21; CHECK-NEXT:   Version:         0x122; CHECK-NEXT: Sections:23; CHECK-NEXT:   - Type:            TYPE24; CHECK-NEXT:     Signatures:25; CHECK-NEXT:       - Index:           026; CHECK-NEXT:         ParamTypes:27; CHECK-NEXT:         ReturnTypes:     []28; CHECK-NEXT:       - Index:           129; CHECK-NEXT:         ParamTypes:      []30; CHECK-NEXT:         ReturnTypes:31; CHECK-NEXT:           - I3232; CHECK-NEXT:   - Type:            FUNCTION33; CHECK-NEXT:     FunctionTypes:   [ 0, 1, 1, 1, 1, 1 ]34; CHECK-NEXT:   - Type:            TABLE35; CHECK-NEXT:     Tables:36; CHECK-NEXT:       - Index:           037; CHECK-NEXT:         ElemType:        FUNCREF38; CHECK-NEXT:         Limits:39; CHECK-NEXT:           Flags:           [ HAS_MAX ]40; CHECK-NEXT:           Minimum:         0x241; CHECK-NEXT:           Maximum:         0x242; CHECK-NEXT:   - Type:            MEMORY43; CHECK-NEXT:     Memories:44; CHECK-NEXT:       - Minimum:         0x145; CHECK-NEXT:   - Type:            GLOBAL46; CHECK-NEXT:     Globals:47; CHECK-NEXT:       - Index:           048; CHECK-NEXT:         Type:            I3249; CHECK-NEXT:         Mutable:         true50; CHECK-NEXT:         InitExpr:51; CHECK-NEXT:           Opcode:          I32_CONST52; CHECK-NEXT:           Value:           6553653; CHECK-NEXT:   - Type:            EXPORT54; CHECK-NEXT:     Exports:55; CHECK-NEXT:       - Name:            memory56; CHECK-NEXT:         Kind:            MEMORY57; CHECK-NEXT:         Index:           058; CHECK-NEXT:       - Name:            _start59; CHECK-NEXT:         Kind:            FUNCTION60; CHECK-NEXT:         Index:           061; CHECK-NEXT:       - Name:            alias_fn62; CHECK-NEXT:         Kind:            FUNCTION63; CHECK-NEXT:         Index:           164; CHECK-NEXT:       - Name:            direct_fn65; CHECK-NEXT:         Kind:            FUNCTION66; CHECK-NEXT:         Index:           167; CHECK-NEXT:       - Name:            call_direct68; CHECK-NEXT:         Kind:            FUNCTION69; CHECK-NEXT:         Index:           270; CHECK-NEXT:       - Name:            call_alias71; CHECK-NEXT:         Kind:            FUNCTION72; CHECK-NEXT:         Index:           373; CHECK-NEXT:       - Name:            call_alias_ptr74; CHECK-NEXT:         Kind:            FUNCTION75; CHECK-NEXT:         Index:           476; CHECK-NEXT:       - Name:            call_direct_ptr77; CHECK-NEXT:         Kind:            FUNCTION78; CHECK-NEXT:         Index:           579; CHECK-NEXT:   - Type:            ELEM80; CHECK-NEXT:     Segments:81; CHECK-NEXT:       - Offset:82; CHECK-NEXT:           Opcode:          I32_CONST83; CHECK-NEXT:           Value:           184; CHECK-NEXT:         Functions:       [ 1 ]85; CHECK-NEXT:   - Type:            CODE86; CHECK-NEXT:     Functions:87; CHECK-NEXT:       - Index:           088; CHECK-NEXT:         Locals:89; CHECK-NEXT:         Body:            1081808080001A0B90; CHECK-NEXT:       - Index:           191; CHECK-NEXT:         Locals:92; CHECK-NEXT:         Body:            41000B93; CHECK-NEXT:       - Index:           294; CHECK-NEXT:         Locals:95; CHECK-NEXT:         Body:            1081808080000B96; CHECK-NEXT:       - Index:           397; CHECK-NEXT:         Locals:98; CHECK-NEXT:         Body:            1081808080000B99; CHECK-NEXT:       - Index:           4100; CHECK-NEXT:         Locals:101; CHECK-NEXT:           - Type:            I32102; CHECK-NEXT:             Count:           2103; CHECK-NEXT:         Body:            23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B104; CHECK-NEXT:       - Index:           5105; CHECK-NEXT:         Locals:106; CHECK-NEXT:           - Type:            I32107; CHECK-NEXT:             Count:           2108; CHECK-NEXT:         Body:            23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B109; CHECK-NEXT:   - Type:            CUSTOM110; CHECK-NEXT:     HeaderSecSizeEncodingLen: 2111; CHECK-NEXT:     Name:            name112; CHECK-NEXT:     FunctionNames:113; CHECK-NEXT:       - Index:           0114; CHECK-NEXT:         Name:            _start115; CHECK-NEXT:       - Index:           1116; CHECK-NEXT:         Name:            direct_fn117; CHECK-NEXT:       - Index:           2118; CHECK-NEXT:         Name:            call_direct119; CHECK-NEXT:       - Index:           3120; CHECK-NEXT:         Name:            call_alias121; CHECK-NEXT:       - Index:           4122; CHECK-NEXT:         Name:            call_alias_ptr123; CHECK-NEXT:       - Index:           5124; CHECK-NEXT:         Name:            call_direct_ptr125; CHECK-NEXT:     GlobalNames:126; CHECK-NEXT:       - Index:           0127; CHECK-NEXT:         Name:            __stack_pointer128; CHECK-NEXT: ...129 130; RUN: wasm-ld --relocatable %t.o %t2.o -o %t.reloc.o131; RUN: obj2yaml %t.reloc.o | FileCheck %s -check-prefix=RELOC132 133; RELOC:      --- !WASM134; RELOC-NEXT: FileHeader:135; RELOC-NEXT:   Version:         0x1136; RELOC-NEXT: Sections:137; RELOC-NEXT:   - Type:            TYPE138; RELOC-NEXT:     Signatures:139; RELOC-NEXT:       - Index:           0140; RELOC-NEXT:         ParamTypes:      []141; RELOC-NEXT:         ReturnTypes:     []142; RELOC-NEXT:       - Index:           1143; RELOC-NEXT:         ParamTypes:      []144; RELOC-NEXT:         ReturnTypes:145; RELOC-NEXT:           - I32146; RELOC-NEXT:   - Type:            IMPORT147; RELOC-NEXT:     Imports:148; RELOC-NEXT:       - Module:          env149; RELOC-NEXT:         Field:           __indirect_function_table150; RELOC-NEXT:         Kind:            TABLE151; RELOC-NEXT:         Table:152; RELOC-NEXT:           Index:           0153; RELOC-NEXT:           ElemType:        FUNCREF154; RELOC-NEXT:           Limits:155; RELOC-NEXT:             Minimum:         0x2156; RELOC-NEXT:       - Module:          env157; RELOC-NEXT:         Field:           __stack_pointer158; RELOC-NEXT:         Kind:            GLOBAL159; RELOC-NEXT:         GlobalType:      I32160; RELOC-NEXT:         GlobalMutable:   true161; RELOC-NEXT:   - Type:            FUNCTION162; RELOC-NEXT:     FunctionTypes:   [ 0, 1, 1, 1, 1, 1 ]163; RELOC-NEXT:   - Type:            MEMORY164; RELOC-NEXT:     Memories:165; RELOC-NEXT:       - Minimum:         0x0166; RELOC-NEXT:   - Type:            ELEM167; RELOC-NEXT:     Segments:168; RELOC-NEXT:       - Offset:169; RELOC-NEXT:           Opcode:          I32_CONST170; RELOC-NEXT:           Value:           1171; RELOC-NEXT:         Functions:       [ 1 ]172; RELOC-NEXT:   - Type:            CODE173; RELOC-NEXT:     Relocations:174; RELOC-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB175; RELOC-NEXT:         Index:           1176; RELOC-NEXT:         Offset:          0x4177; RELOC-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB178; RELOC-NEXT:         Index:           2179; RELOC-NEXT:         Offset:          0x13180; RELOC-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB181; RELOC-NEXT:         Index:           1182; RELOC-NEXT:         Offset:          0x1C183; RELOC-NEXT:       - Type:            R_WASM_GLOBAL_INDEX_LEB184; RELOC-NEXT:         Index:           6185; RELOC-NEXT:         Offset:          0x27186; RELOC-NEXT:       - Type:            R_WASM_GLOBAL_INDEX_LEB187; RELOC-NEXT:         Index:           6188; RELOC-NEXT:         Offset:          0x32189; RELOC-NEXT:       - Type:            R_WASM_TABLE_INDEX_SLEB190; RELOC-NEXT:         Index:           1191; RELOC-NEXT:         Offset:          0x3A192; RELOC-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB193; RELOC-NEXT:         Index:           1194; RELOC-NEXT:         Offset:          0x43195; RELOC-NEXT:       - Type:            R_WASM_GLOBAL_INDEX_LEB196; RELOC-NEXT:         Index:           6197; RELOC-NEXT:         Offset:          0x50198; RELOC-NEXT:       - Type:            R_WASM_GLOBAL_INDEX_LEB199; RELOC-NEXT:         Index:           6200; RELOC-NEXT:         Offset:          0x5D201; RELOC-NEXT:       - Type:            R_WASM_GLOBAL_INDEX_LEB202; RELOC-NEXT:         Index:           6203; RELOC-NEXT:         Offset:          0x68204; RELOC-NEXT:       - Type:            R_WASM_TABLE_INDEX_SLEB205; RELOC-NEXT:         Index:           2206; RELOC-NEXT:         Offset:          0x70207; RELOC-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB208; RELOC-NEXT:         Index:           2209; RELOC-NEXT:         Offset:          0x79210; RELOC-NEXT:       - Type:            R_WASM_GLOBAL_INDEX_LEB211; RELOC-NEXT:         Index:           6212; RELOC-NEXT:         Offset:          0x86213; RELOC-NEXT:     Functions:214; RELOC-NEXT:       - Index:           0215; RELOC-NEXT:         Locals:216; RELOC-NEXT:         Body:            1081808080001A0B217; RELOC-NEXT:       - Index:           1218; RELOC-NEXT:         Locals:219; RELOC-NEXT:         Body:            41000B220; RELOC-NEXT:       - Index:           2221; RELOC-NEXT:         Locals:222; RELOC-NEXT:         Body:            1081808080000B223; RELOC-NEXT:       - Index:           3224; RELOC-NEXT:         Locals:225; RELOC-NEXT:         Body:            1081808080000B226; RELOC-NEXT:       - Index:           4227; RELOC-NEXT:         Locals:228; RELOC-NEXT:           - Type:            I32229; RELOC-NEXT:             Count:           2230; RELOC-NEXT:         Body:            23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B231; RELOC-NEXT:       - Index:           5232; RELOC-NEXT:         Locals:233; RELOC-NEXT:           - Type:            I32234; RELOC-NEXT:             Count:           2235; RELOC-NEXT:         Body:            23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B236; RELOC-NEXT:   - Type:            CUSTOM237; RELOC-NEXT:     Name:            linking238; RELOC-NEXT:     Version:         2239; RELOC-NEXT:     SymbolTable:240; RELOC-NEXT:       - Index:           0241; RELOC-NEXT:         Kind:            FUNCTION242; RELOC-NEXT:         Name:            _start243; RELOC-NEXT:         Flags:           [  ]244; RELOC-NEXT:         Function:        0245; RELOC-NEXT:       - Index:           1246; RELOC-NEXT:         Kind:            FUNCTION247; RELOC-NEXT:         Name:            alias_fn248; RELOC-NEXT:         Flags:           [ BINDING_WEAK ]249; RELOC-NEXT:         Function:        1250; RELOC-NEXT:       - Index:           2251; RELOC-NEXT:         Kind:            FUNCTION252; RELOC-NEXT:         Name:            direct_fn253; RELOC-NEXT:         Flags:           [  ]254; RELOC-NEXT:         Function:        1255; RELOC-NEXT:       - Index:           3256; RELOC-NEXT:         Kind:            FUNCTION257; RELOC-NEXT:         Name:            call_direct258; RELOC-NEXT:         Flags:           [  ]259; RELOC-NEXT:         Function:        2260; RELOC-NEXT:       - Index:           4261; RELOC-NEXT:         Kind:            FUNCTION262; RELOC-NEXT:         Name:            call_alias263; RELOC-NEXT:         Flags:           [  ]264; RELOC-NEXT:         Function:        3265; RELOC-NEXT:       - Index:           5266; RELOC-NEXT:         Kind:            FUNCTION267; RELOC-NEXT:         Name:            call_alias_ptr268; RELOC-NEXT:         Flags:           [  ]269; RELOC-NEXT:         Function:        4270; RELOC-NEXT:       - Index:           6271; RELOC-NEXT:         Kind:            GLOBAL272; RELOC-NEXT:         Name:            __stack_pointer273; RELOC-NEXT:         Flags:           [ UNDEFINED ]274; RELOC-NEXT:         Global:          0275; RELOC-NEXT:       - Index:           7276; RELOC-NEXT:         Kind:            FUNCTION277; RELOC-NEXT:         Name:            call_direct_ptr278; RELOC-NEXT:         Flags:           [  ]279; RELOC-NEXT:         Function:        5280; RELOC-NEXT:       - Index:           8281; RELOC-NEXT:         Kind:            TABLE282; RELOC-NEXT:         Name:            __indirect_function_table283; RELOC-NEXT:         Flags:           [ UNDEFINED, NO_STRIP ]284; RELOC-NEXT:         Table:           0285; RELOC-NEXT:   - Type:            CUSTOM286; RELOC-NEXT:     Name:            name287; RELOC-NEXT:     FunctionNames:288; RELOC-NEXT:       - Index:           0289; RELOC-NEXT:         Name:            _start290; RELOC-NEXT:       - Index:           1291; RELOC-NEXT:         Name:            direct_fn292; RELOC-NEXT:       - Index:           2293; RELOC-NEXT:         Name:            call_direct294; RELOC-NEXT:       - Index:           3295; RELOC-NEXT:         Name:            call_alias296; RELOC-NEXT:       - Index:           4297; RELOC-NEXT:         Name:            call_alias_ptr298; RELOC-NEXT:       - Index:           5299; RELOC-NEXT:         Name:            call_direct_ptr300; RELOC-NEXT:     GlobalNames:301; RELOC-NEXT:       - Index:           0302; RELOC-NEXT:         Name:            __stack_pointer303; RELOC-NEXT: ...304