From 03bb127569a515e2023ff406952c4d6fd8c8aaa1 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Tue, 23 Jan 2018 23:36:10 +0000 Subject: [PATCH] [WebAssembly] Add --relocatable test to test/wasm/weak-alias.ll. NFC. There seems to be an bug related to table relocations not being written correctly in this case. This change is intended simply to increase the coverage, not fix the issue. llvm-svn: 323282 --- lld/test/wasm/weak-alias.ll | 147 ++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) diff --git a/lld/test/wasm/weak-alias.ll b/lld/test/wasm/weak-alias.ll index b7dfc6ac1fb6..7fc41cc84ee2 100644 --- a/lld/test/wasm/weak-alias.ll +++ b/lld/test/wasm/weak-alias.ll @@ -135,3 +135,150 @@ entry: ; CHECK-NEXT: - Index: 6 ; CHECK-NEXT: Name: __wasm_call_ctors ; CHECK-NEXT: ... + +; RUN: lld -flavor wasm --relocatable %t.o %t2.o -o %t.reloc.o +; RUN: obj2yaml %t.reloc.o | FileCheck %s -check-prefix=RELOC + +; RELOC: --- !WASM +; RELOC-NEXT: FileHeader: +; RELOC-NEXT: Version: 0x00000001 +; RELOC-NEXT: Sections: +; RELOC-NEXT: - Type: TYPE +; RELOC-NEXT: Signatures: +; RELOC-NEXT: - Index: 0 +; RELOC-NEXT: ReturnType: I32 +; RELOC-NEXT: ParamTypes: +; RELOC-NEXT: - Type: IMPORT +; RELOC-NEXT: Imports: +; RELOC-NEXT: - Module: env +; RELOC-NEXT: Field: __stack_pointer +; RELOC-NEXT: Kind: GLOBAL +; RELOC-NEXT: GlobalType: I32 +; RELOC-NEXT: GlobalMutable: false +; RELOC-NEXT: - Type: FUNCTION +; RELOC-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0, 0 ] +; RELOC-NEXT: - Type: TABLE +; RELOC-NEXT: Tables: +; RELOC-NEXT: - ElemType: ANYFUNC +; RELOC-NEXT: Limits: +; RELOC-NEXT: Flags: [ HAS_MAX ] +; RELOC-NEXT: Initial: 0x00000002 +; RELOC-NEXT: Maximum: 0x00000002 +; RELOC-NEXT: - Type: MEMORY +; RELOC-NEXT: Memories: +; RELOC-NEXT: - Initial: 0x00000000 +; RELOC-NEXT: - Type: EXPORT +; RELOC-NEXT: Exports: +; RELOC-NEXT: - Name: _start +; RELOC-NEXT: Kind: FUNCTION +; RELOC-NEXT: Index: 0 +; RELOC-NEXT: - Name: alias_fn +; RELOC-NEXT: Kind: FUNCTION +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: - Name: direct_fn +; RELOC-NEXT: Kind: FUNCTION +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: - Name: call_direct +; RELOC-NEXT: Kind: FUNCTION +; RELOC-NEXT: Index: 2 +; RELOC-NEXT: - Name: call_alias +; RELOC-NEXT: Kind: FUNCTION +; RELOC-NEXT: Index: 3 +; RELOC-NEXT: - Name: call_alias_ptr +; RELOC-NEXT: Kind: FUNCTION +; RELOC-NEXT: Index: 4 +; RELOC-NEXT: - Name: call_direct_ptr +; RELOC-NEXT: Kind: FUNCTION +; RELOC-NEXT: Index: 5 +; RELOC-NEXT: - Type: ELEM +; RELOC-NEXT: Segments: +; RELOC-NEXT: - Offset: +; RELOC-NEXT: Opcode: I32_CONST +; RELOC-NEXT: Value: 0 +; RELOC-NEXT: Functions: [ 1, 1 ] +; RELOC-NEXT: - Type: CODE +; RELOC-NEXT: Relocations: +; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: Offset: 0x00000004 +; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: Offset: 0x00000012 +; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: Offset: 0x0000001B +; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB +; RELOC-NEXT: Index: 0 +; RELOC-NEXT: Offset: 0x00000026 +; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB +; RELOC-NEXT: Index: 0 +; RELOC-NEXT: Offset: 0x00000031 +; RELOC-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: Offset: 0x00000039 +; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: Offset: 0x00000042 +; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB +; RELOC-NEXT: Index: 0 +; RELOC-NEXT: Offset: 0x0000004F +; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB +; RELOC-NEXT: Index: 0 +; RELOC-NEXT: Offset: 0x0000005C +; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB +; RELOC-NEXT: Index: 0 +; RELOC-NEXT: Offset: 0x00000067 +; RELOC-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: Offset: 0x0000006F +; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB +; RELOC-NEXT: Index: 1 +; RELOC-NEXT: Offset: 0x00000078 +; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB +; RELOC-NEXT: Index: 0 +; RELOC-NEXT: Offset: 0x00000085 +; RELOC-NEXT: Functions: +; RELOC-NEXT: - Index: 0 +; RELOC-NEXT: Locals: +; RELOC-NEXT: Body: 1081808080000B +; RELOC-NEXT: - Index: 1 +; RELOC-NEXT: Locals: +; RELOC-NEXT: Body: 41000B +; RELOC-NEXT: - Index: 2 +; RELOC-NEXT: Locals: +; RELOC-NEXT: Body: 1081808080000B +; RELOC-NEXT: - Index: 3 +; RELOC-NEXT: Locals: +; RELOC-NEXT: Body: 1081808080000B +; RELOC-NEXT: - Index: 4 +; RELOC-NEXT: Locals: +; RELOC-NEXT: - Type: I32 +; RELOC-NEXT: Count: 2 +; RELOC-NEXT: Body: 23808080800041106B220024808080800020004180808080003602081081808080002101200041106A24808080800020010B +; RELOC-NEXT: - Index: 5 +; RELOC-NEXT: Locals: +; RELOC-NEXT: - Type: I32 +; RELOC-NEXT: Count: 2 +; RELOC-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B +; RELOC-NEXT: - Type: CUSTOM +; RELOC-NEXT: Name: linking +; RELOC-NEXT: DataSize: 0 +; RELOC-NEXT: SymbolInfo: +; RELOC-NEXT: - Name: alias_fn +; RELOC-NEXT: Flags: [ BINDING_WEAK ] +; RELOC-NEXT: - Type: CUSTOM +; RELOC-NEXT: Name: name +; RELOC-NEXT: FunctionNames: +; RELOC-NEXT: - Index: 0 +; RELOC-NEXT: Name: _start +; RELOC-NEXT: - Index: 1 +; RELOC-NEXT: Name: direct_fn +; RELOC-NEXT: - Index: 2 +; RELOC-NEXT: Name: call_direct +; RELOC-NEXT: - Index: 3 +; RELOC-NEXT: Name: call_alias +; RELOC-NEXT: - Index: 4 +; RELOC-NEXT: Name: call_alias_ptr +; RELOC-NEXT: - Index: 5 +; RELOC-NEXT: Name: call_direct_ptr +; RELOC-NEXT: ...