diff options
-rw-r--r-- | lld/test/wasm/data-layout.ll | 10 | ||||
-rw-r--r-- | lld/wasm/Writer.cpp | 12 |
2 files changed, 10 insertions, 12 deletions
diff --git a/lld/test/wasm/data-layout.ll b/lld/test/wasm/data-layout.ll index dad8ea3466c..1da4ff0710c 100644 --- a/lld/test/wasm/data-layout.ll +++ b/lld/test/wasm/data-layout.ll @@ -20,27 +20,27 @@ ; CHECK-NEXT: Mutable: false ; CHECK-NEXT: InitExpr: ; CHECK-NEXT: Opcode: I32_CONST -; CHECK-NEXT: Value: 1052 +; CHECK-NEXT: Value: 1024 ; CHECK-NEXT: - Type: I32 ; CHECK-NEXT: Mutable: false ; CHECK-NEXT: InitExpr: ; CHECK-NEXT: Opcode: I32_CONST -; CHECK-NEXT: Value: 1024 +; CHECK-NEXT: Value: 1040 ; CHECK-NEXT: - Type: I32 ; CHECK-NEXT: Mutable: false ; CHECK-NEXT: InitExpr: ; CHECK-NEXT: Opcode: I32_CONST -; CHECK-NEXT: Value: 1040 +; CHECK-NEXT: Value: 1048 ; CHECK-NEXT: - Type: I32 ; CHECK-NEXT: Mutable: false ; CHECK-NEXT: InitExpr: ; CHECK-NEXT: Opcode: I32_CONST -; CHECK-NEXT: Value: 1048 +; CHECK-NEXT: Value: 1052 ; CHECK: - Type: DATA ; CHECK-NEXT: Relocations: ; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 -; CHECK-NEXT: Index: 1 +; CHECK-NEXT: Index: 4 ; CHECK-NEXT: Offset: 0x0000001F ; CHECK-NEXT: Segments: ; CHECK-NEXT: - SectionOffset: 7 diff --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp index bc7d969bb75..7af5df3736c 100644 --- a/lld/wasm/Writer.cpp +++ b/lld/wasm/Writer.cpp @@ -614,15 +614,13 @@ void Writer::assignSymbolIndexes() { for (ObjFile *File : Symtab->ObjectFiles) { DEBUG(dbgs() << "assignSymbolIndexes: " << File->getName() << "\n"); for (Symbol *Sym : File->getSymbols()) { - if (Sym->hasOutputIndex() || !Sym->isDefined()) + // Assign indexes for symbols defined with this file. + if (!Sym->isDefined() || File != Sym->getFile()) continue; - if (Sym->isFunction()) { - if (Sym->getFile() && isa<ObjFile>(Sym->getFile())) { - auto *Obj = cast<ObjFile>(Sym->getFile()); - Sym->setOutputIndex(Obj->FunctionIndexOffset + - Sym->getFunctionIndex()); - } + auto *Obj = cast<ObjFile>(Sym->getFile()); + Sym->setOutputIndex(Obj->FunctionIndexOffset + + Sym->getFunctionIndex()); } else if (Config->EmitRelocs) { DefinedGlobals.emplace_back(Sym); Sym->setOutputIndex(GlobalIndex++); |