Index: lld/trunk/test/wasm/alias.ll =================================================================== --- lld/trunk/test/wasm/alias.ll +++ lld/trunk/test/wasm/alias.ll @@ -79,9 +79,6 @@ ; 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 Index: lld/trunk/test/wasm/call-indirect.ll =================================================================== --- lld/trunk/test/wasm/call-indirect.ll +++ lld/trunk/test/wasm/call-indirect.ll @@ -151,9 +151,6 @@ ; 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 Index: lld/trunk/test/wasm/data-layout.ll =================================================================== --- lld/trunk/test/wasm/data-layout.ll +++ lld/trunk/test/wasm/data-layout.ll @@ -79,7 +79,6 @@ ; RELOC: - Type: CUSTOM ; RELOC-NEXT: Name: linking -; RELOC-NEXT: DataSize: 35 ; RELOC-NEXT: SymbolTable: ; RELOC-NEXT: - Index: 0 ; RELOC-NEXT: Kind: DATA Index: lld/trunk/test/wasm/function-imports-first.ll =================================================================== --- lld/trunk/test/wasm/function-imports-first.ll +++ lld/trunk/test/wasm/function-imports-first.ll @@ -37,9 +37,6 @@ ; 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 Index: lld/trunk/test/wasm/gc-sections.ll =================================================================== --- lld/trunk/test/wasm/gc-sections.ll +++ lld/trunk/test/wasm/gc-sections.ll @@ -47,9 +47,6 @@ ; 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 @@ ; 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 Index: lld/trunk/test/wasm/init-fini.ll =================================================================== --- lld/trunk/test/wasm/init-fini.ll +++ lld/trunk/test/wasm/init-fini.ll @@ -56,9 +56,6 @@ ; 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 @@ ; 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 Index: lld/trunk/test/wasm/local-symbols.ll =================================================================== --- lld/trunk/test/wasm/local-symbols.ll +++ lld/trunk/test/wasm/local-symbols.ll @@ -97,9 +97,6 @@ ; 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 Index: lld/trunk/test/wasm/locals-duplicate.test =================================================================== --- lld/trunk/test/wasm/locals-duplicate.test +++ lld/trunk/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 Index: lld/trunk/test/wasm/many-functions.ll =================================================================== --- lld/trunk/test/wasm/many-functions.ll +++ lld/trunk/test/wasm/many-functions.ll @@ -815,7 +815,6 @@ ; 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 Index: lld/trunk/test/wasm/relocatable.ll =================================================================== --- lld/trunk/test/wasm/relocatable.ll +++ lld/trunk/test/wasm/relocatable.ll @@ -157,7 +157,6 @@ ; 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 Index: lld/trunk/test/wasm/stack-pointer.ll =================================================================== --- lld/trunk/test/wasm/stack-pointer.ll +++ lld/trunk/test/wasm/stack-pointer.ll @@ -50,7 +50,6 @@ ; 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 Index: lld/trunk/test/wasm/weak-alias-overide.ll =================================================================== --- lld/trunk/test/wasm/weak-alias-overide.ll +++ lld/trunk/test/wasm/weak-alias-overide.ll @@ -132,9 +132,6 @@ ; 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 Index: lld/trunk/test/wasm/weak-alias.ll =================================================================== --- lld/trunk/test/wasm/weak-alias.ll +++ lld/trunk/test/wasm/weak-alias.ll @@ -126,9 +126,6 @@ ; 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 @@ ; 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 Index: lld/trunk/test/wasm/weak-symbols.ll =================================================================== --- lld/trunk/test/wasm/weak-symbols.ll +++ lld/trunk/test/wasm/weak-symbols.ll @@ -118,9 +118,6 @@ ; 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 Index: lld/trunk/test/wasm/weak-undefined.ll =================================================================== --- lld/trunk/test/wasm/weak-undefined.ll +++ lld/trunk/test/wasm/weak-undefined.ll @@ -104,7 +104,4 @@ ; 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: ... Index: lld/trunk/wasm/Writer.cpp =================================================================== --- lld/trunk/wasm/Writer.cpp +++ lld/trunk/wasm/Writer.cpp @@ -117,7 +117,6 @@ void writeSections(); uint64_t FileSize = 0; - uint32_t DataSize = 0; uint32_t NumMemoryPages = 0; std::vector Types; @@ -386,11 +385,6 @@ 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 @@ // - 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 @@ 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 @@ createDataSection(); // Custom sections - if (Config->Relocatable) + if (Config->Relocatable) { createRelocSections(); - createLinkingSection(); + createLinkingSection(); + } if (!Config->StripDebug && !Config->StripAll) createNameSection(); @@ -919,6 +909,9 @@ } void Writer::run() { + if (Config->Relocatable) + Config->GlobalBase = 0; + log("-- calculateImports"); calculateImports(); log("-- assignIndexes");