From 99eb42c0c5ebe7ffe65c1bd7efeeaf9f3edf8340 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Tue, 27 Feb 2018 23:58:03 +0000 Subject: [PATCH] [WebAssembly] Remove DataSize from linking metadata This means we don't need to write the linking metadata section at all for executable (non-relocatable) output. Differential Revision: https://reviews.llvm.org/D42869 llvm-svn: 326268 --- lld/test/wasm/alias.ll | 3 --- lld/test/wasm/call-indirect.ll | 3 --- lld/test/wasm/data-layout.ll | 1 - lld/test/wasm/function-imports-first.ll | 3 --- lld/test/wasm/gc-sections.ll | 6 ------ lld/test/wasm/init-fini.ll | 4 ---- lld/test/wasm/local-symbols.ll | 3 --- lld/test/wasm/locals-duplicate.test | 4 ---- lld/test/wasm/many-functions.ll | 1 - lld/test/wasm/relocatable.ll | 1 - lld/test/wasm/stack-pointer.ll | 1 - lld/test/wasm/weak-alias-overide.ll | 3 --- lld/test/wasm/weak-alias.ll | 4 ---- lld/test/wasm/weak-symbols.ll | 3 --- lld/test/wasm/weak-undefined.ll | 3 --- lld/wasm/Writer.cpp | 25 +++++++++---------------- 16 files changed, 9 insertions(+), 59 deletions(-) diff --git a/lld/test/wasm/alias.ll b/lld/test/wasm/alias.ll index 5ae537e..5ac709a 100644 --- a/lld/test/wasm/alias.ll +++ b/lld/test/wasm/alias.ll @@ -79,9 +79,6 @@ entry: ; CHECK-NEXT: Locals: ; CHECK-NEXT: Body: 0B ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 0 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 diff --git a/lld/test/wasm/call-indirect.ll b/lld/test/wasm/call-indirect.ll index c6b6a89..0dc59d1 100644 --- a/lld/test/wasm/call-indirect.ll +++ b/lld/test/wasm/call-indirect.ll @@ -151,9 +151,6 @@ define void @call_ptr(i64 (i64)* %arg) { ; CHECK-NEXT: Value: 1024 ; CHECK-NEXT: Content: '010000000200000002000000' ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 12 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 diff --git a/lld/test/wasm/data-layout.ll b/lld/test/wasm/data-layout.ll index 3752b0d..0bb8642 100644 --- a/lld/test/wasm/data-layout.ll +++ b/lld/test/wasm/data-layout.ll @@ -79,7 +79,6 @@ target triple = "wasm32-unknown-unknown-wasm" ; RELOC: - Type: CUSTOM ; RELOC-NEXT: Name: linking -; RELOC-NEXT: DataSize: 35 ; RELOC-NEXT: SymbolTable: ; RELOC-NEXT: - Index: 0 ; RELOC-NEXT: Kind: DATA diff --git a/lld/test/wasm/function-imports-first.ll b/lld/test/wasm/function-imports-first.ll index 7beac8e..876d4d1 100644 --- a/lld/test/wasm/function-imports-first.ll +++ b/lld/test/wasm/function-imports-first.ll @@ -37,9 +37,6 @@ declare i32 @ret32(float) local_unnamed_addr #1 ; CHECK-NEXT: Locals: ; CHECK-NEXT: Body: 0B ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 0 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 diff --git a/lld/test/wasm/gc-sections.ll b/lld/test/wasm/gc-sections.ll index 0801767..d3b3731 100644 --- a/lld/test/wasm/gc-sections.ll +++ b/lld/test/wasm/gc-sections.ll @@ -47,9 +47,6 @@ entry: ; CHECK-NEXT: Value: 1024 ; CHECK-NEXT: Content: '02000000' ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 4 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 @@ -85,9 +82,6 @@ entry: ; NO-GC-NEXT: Value: 1024 ; NO-GC-NEXT: Content: '010000000000000002000000' ; NO-GC-NEXT: - Type: CUSTOM -; NO-GC-NEXT: Name: linking -; NO-GC-NEXT: DataSize: 12 -; NO-GC-NEXT: - Type: CUSTOM ; NO-GC-NEXT: Name: name ; NO-GC-NEXT: FunctionNames: ; NO-GC-NEXT: - Index: 0 diff --git a/lld/test/wasm/init-fini.ll b/lld/test/wasm/init-fini.ll index d4f3c19..f05b339 100644 --- a/lld/test/wasm/init-fini.ll +++ b/lld/test/wasm/init-fini.ll @@ -56,9 +56,6 @@ entry: ; CHECK: Body: 100010011007100A100D100A100F10001009100A10110B ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 0 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 @@ -106,7 +103,6 @@ entry: ; RUN: obj2yaml %t.reloc.wasm | FileCheck -check-prefix=RELOC %s ; RELOC: Name: linking -; RELOC-NEXT: DataSize: 0 ; RELOC-NEXT: SymbolTable: ; RELOC-NEXT: - Index: 0 ; RELOC-NEXT: Kind: DATA diff --git a/lld/test/wasm/local-symbols.ll b/lld/test/wasm/local-symbols.ll index 00aa1d5..daefb97 100644 --- a/lld/test/wasm/local-symbols.ll +++ b/lld/test/wasm/local-symbols.ll @@ -97,9 +97,6 @@ entry: ; CHECK-NEXT: Value: 1024 ; CHECK-NEXT: Content: '0100000003000000' ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 8 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 diff --git a/lld/test/wasm/locals-duplicate.test b/lld/test/wasm/locals-duplicate.test index 5856a83..075f2aa 100644 --- a/lld/test/wasm/locals-duplicate.test +++ b/lld/test/wasm/locals-duplicate.test @@ -175,9 +175,6 @@ ; CHECK-NEXT: Value: 1024 ; CHECK-NEXT: Content: '000000000000000000000000000000000000000000000000' ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 24 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 @@ -367,7 +364,6 @@ ; RELOC-NEXT: Content: '0000000000000000' ; RELOC-NEXT: - Type: CUSTOM ; RELOC-NEXT: Name: linking -; RELOC-NEXT: DataSize: 24 ; RELOC-NEXT: SymbolTable: ; RELOC-NEXT: - Index: 0 ; RELOC-NEXT: Kind: FUNCTION diff --git a/lld/test/wasm/many-functions.ll b/lld/test/wasm/many-functions.ll index d58e472..9d08c67 100644 --- a/lld/test/wasm/many-functions.ll +++ b/lld/test/wasm/many-functions.ll @@ -815,7 +815,6 @@ entry: ; CHECK-NEXT: Content: '01000000' ; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 8 ; CHECK-NEXT: SymbolTable: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Kind: FUNCTION diff --git a/lld/test/wasm/relocatable.ll b/lld/test/wasm/relocatable.ll index dede1be..48dc262 100644 --- a/lld/test/wasm/relocatable.ll +++ b/lld/test/wasm/relocatable.ll @@ -157,7 +157,6 @@ entry: ; CHECK-NEXT: Content: '616263' ; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 31 ; CHECK-NEXT: SymbolTable: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Kind: FUNCTION diff --git a/lld/test/wasm/stack-pointer.ll b/lld/test/wasm/stack-pointer.ll index cc44646..5172971 100644 --- a/lld/test/wasm/stack-pointer.ll +++ b/lld/test/wasm/stack-pointer.ll @@ -50,7 +50,6 @@ entry: ; CHECK-NEXT: Body: 23808080800041106B1A41000B ; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 0 ; CHECK-NEXT: SymbolTable: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Kind: GLOBAL diff --git a/lld/test/wasm/weak-alias-overide.ll b/lld/test/wasm/weak-alias-overide.ll index 2849e15..dd7a78f 100644 --- a/lld/test/wasm/weak-alias-overide.ll +++ b/lld/test/wasm/weak-alias-overide.ll @@ -132,9 +132,6 @@ entry: ; CHECK-NEXT: Locals: ; CHECK-NEXT: Body: 0B ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 0 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 diff --git a/lld/test/wasm/weak-alias.ll b/lld/test/wasm/weak-alias.ll index 2e31c72..6573b41 100644 --- a/lld/test/wasm/weak-alias.ll +++ b/lld/test/wasm/weak-alias.ll @@ -126,9 +126,6 @@ entry: ; CHECK-NEXT: Locals: ; CHECK-NEXT: Body: 0B ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 0 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 @@ -253,7 +250,6 @@ entry: ; RELOC-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B ; RELOC-NEXT: - Type: CUSTOM ; RELOC-NEXT: Name: linking -; RELOC-NEXT: DataSize: 0 ; RELOC-NEXT: SymbolTable: ; RELOC-NEXT: - Index: 0 ; RELOC-NEXT: Kind: FUNCTION diff --git a/lld/test/wasm/weak-symbols.ll b/lld/test/wasm/weak-symbols.ll index 7b8891e..649fd56 100644 --- a/lld/test/wasm/weak-symbols.ll +++ b/lld/test/wasm/weak-symbols.ll @@ -118,9 +118,6 @@ entry: ; CHECK-NEXT: Value: 1024 ; CHECK-NEXT: Content: '0100000002000000' ; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 8 -; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 diff --git a/lld/test/wasm/weak-undefined.ll b/lld/test/wasm/weak-undefined.ll index 198a33a..0c7cf46 100644 --- a/lld/test/wasm/weak-undefined.ll +++ b/lld/test/wasm/weak-undefined.ll @@ -104,7 +104,4 @@ entry: ; CHECK-NEXT: - Index: 3 ; CHECK-NEXT: Locals: ; CHECK-NEXT: Body: 0B -; CHECK-NEXT: - Type: CUSTOM -; CHECK-NEXT: Name: linking -; CHECK-NEXT: DataSize: 0 ; CHECK-NEXT: ... diff --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp index 2d9a9d9..90252b7 100644 --- a/lld/wasm/Writer.cpp +++ b/lld/wasm/Writer.cpp @@ -117,7 +117,6 @@ private: void writeSections(); uint64_t FileSize = 0; - uint32_t DataSize = 0; uint32_t NumMemoryPages = 0; std::vector Types; @@ -386,11 +385,6 @@ void Writer::createLinkingSection() { createSyntheticSection(WASM_SEC_CUSTOM, "linking"); raw_ostream &OS = Section->getStream(); - SubSection DataSizeSubSection(WASM_DATA_SIZE); - writeUleb128(DataSizeSubSection.getStream(), DataSize, "data size"); - DataSizeSubSection.finalizeContents(); - DataSizeSubSection.writeToStream(OS); - if (!Config->Relocatable) return; @@ -550,10 +544,8 @@ void Writer::writeSections() { // - heap start / unallocated void Writer::layoutMemory() { uint32_t MemoryPtr = 0; - if (!Config->Relocatable) { - MemoryPtr = Config->GlobalBase; - debugPrint("mem: global base = %d\n", Config->GlobalBase); - } + MemoryPtr = Config->GlobalBase; + debugPrint("mem: global base = %d\n", Config->GlobalBase); createOutputSegments(); @@ -574,10 +566,7 @@ void Writer::layoutMemory() { if (WasmSym::DataEnd) WasmSym::DataEnd->setVirtualAddress(MemoryPtr); - DataSize = MemoryPtr; - if (!Config->Relocatable) - DataSize -= Config->GlobalBase; - debugPrint("mem: static data = %d\n", DataSize); + debugPrint("mem: static data = %d\n", MemoryPtr - Config->GlobalBase); // Stack comes after static data and bss if (!Config->Relocatable) { @@ -624,9 +613,10 @@ void Writer::createSections() { createDataSection(); // Custom sections - if (Config->Relocatable) + if (Config->Relocatable) { createRelocSections(); - createLinkingSection(); + createLinkingSection(); + } if (!Config->StripDebug && !Config->StripAll) createNameSection(); @@ -919,6 +909,9 @@ void Writer::calculateInitFunctions() { } void Writer::run() { + if (Config->Relocatable) + Config->GlobalBase = 0; + log("-- calculateImports"); calculateImports(); log("-- assignIndexes"); -- 2.7.4