diff options
Diffstat (limited to 'lld/wasm')
-rw-r--r-- | lld/wasm/OutputSegment.h | 2 | ||||
-rw-r--r-- | lld/wasm/Writer.cpp | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/lld/wasm/OutputSegment.h b/lld/wasm/OutputSegment.h index d5c89cd19f4..a982282dac1 100644 --- a/lld/wasm/OutputSegment.h +++ b/lld/wasm/OutputSegment.h @@ -26,7 +26,7 @@ public: void addInputSegment(InputSegment *InSeg) { Alignment = std::max(Alignment, InSeg->getAlignment()); InputSegments.push_back(InSeg); - Size = llvm::alignTo(Size, InSeg->getAlignment()); + Size = llvm::alignTo(Size, 1 << InSeg->getAlignment()); InSeg->OutputSeg = this; InSeg->OutputSegmentOffset = Size; Size += InSeg->getSize(); diff --git a/lld/wasm/Writer.cpp b/lld/wasm/Writer.cpp index 42146c41e9a..819d4298fef 100644 --- a/lld/wasm/Writer.cpp +++ b/lld/wasm/Writer.cpp @@ -477,7 +477,7 @@ void Writer::createDylinkSection() { raw_ostream &OS = Section->getStream(); writeUleb128(OS, MemSize, "MemSize"); - writeUleb128(OS, int(log2(MemAlign)), "MemAlign"); + writeUleb128(OS, MemAlign, "MemAlign"); writeUleb128(OS, IndirectFunctions.size(), "TableSize"); writeUleb128(OS, 0, "TableAlign"); writeUleb128(OS, 0, "Needed"); // TODO: Support "needed" shared libraries @@ -691,7 +691,7 @@ void Writer::layoutMemory() { MemAlign = 0; for (OutputSegment *Seg : Segments) { MemAlign = std::max(MemAlign, Seg->Alignment); - MemoryPtr = alignTo(MemoryPtr, Seg->Alignment); + MemoryPtr = alignTo(MemoryPtr, 1 << Seg->Alignment); Seg->StartVA = MemoryPtr; log(formatv("mem: {0,-15} offset={1,-8} size={2,-8} align={3}", Seg->Name, MemoryPtr, Seg->Size, Seg->Alignment)); |