[lld] r351287 - [WebAssembly] Store section alignment as a power of 2
Sam Clegg via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 15 17:43:21 PST 2019
Author: sbc
Date: Tue Jan 15 17:43:21 2019
New Revision: 351287
URL: http://llvm.org/viewvc/llvm-project?rev=351287&view=rev
Log:
[WebAssembly] Store section alignment as a power of 2
This change bumps for version number of the wasm object file
metadata.
See https://github.com/WebAssembly/tool-conventions/pull/92
Differential Revision: https://reviews.llvm.org/D56762
Modified:
lld/trunk/test/wasm/Inputs/globals.yaml
lld/trunk/test/wasm/Inputs/undefined-globals.yaml
lld/trunk/test/wasm/locals-duplicate.test
lld/trunk/test/wasm/many-functions.ll
lld/trunk/test/wasm/relocatable.ll
lld/trunk/test/wasm/stack-pointer.ll
lld/trunk/test/wasm/weak-alias.ll
lld/trunk/wasm/OutputSegment.h
lld/trunk/wasm/Writer.cpp
Modified: lld/trunk/test/wasm/Inputs/globals.yaml
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/Inputs/globals.yaml?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/test/wasm/Inputs/globals.yaml (original)
+++ lld/trunk/test/wasm/Inputs/globals.yaml Tue Jan 15 17:43:21 2019
@@ -34,7 +34,7 @@ Sections:
Offset: 0x00000004
- Type: CUSTOM
Name: linking
- Version: 1
+ Version: 2
SymbolTable:
- Index: 0
Kind: GLOBAL
Modified: lld/trunk/test/wasm/Inputs/undefined-globals.yaml
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/Inputs/undefined-globals.yaml?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/test/wasm/Inputs/undefined-globals.yaml (original)
+++ lld/trunk/test/wasm/Inputs/undefined-globals.yaml Tue Jan 15 17:43:21 2019
@@ -32,7 +32,7 @@ Sections:
Offset: 0x00000004
- Type: CUSTOM
Name: linking
- Version: 1
+ Version: 2
SymbolTable:
- Index: 0
Kind: GLOBAL
Modified: lld/trunk/test/wasm/locals-duplicate.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/locals-duplicate.test?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/test/wasm/locals-duplicate.test (original)
+++ lld/trunk/test/wasm/locals-duplicate.test Tue Jan 15 17:43:21 2019
@@ -382,7 +382,7 @@
; RELOC-NEXT: Content: '0000000000000000'
; RELOC-NEXT: - Type: CUSTOM
; RELOC-NEXT: Name: linking
-; RELOC-NEXT: Version: 1
+; RELOC-NEXT: Version: 2
; RELOC-NEXT: SymbolTable:
; RELOC-NEXT: - Index: 0
; RELOC-NEXT: Kind: FUNCTION
@@ -516,15 +516,15 @@
; RELOC-NEXT: SegmentInfo:
; RELOC-NEXT: - Index: 0
; RELOC-NEXT: Name: .bss.colliding_global1
-; RELOC-NEXT: Alignment: 4
+; RELOC-NEXT: Alignment: 2
; RELOC-NEXT: Flags: [ ]
; RELOC-NEXT: - Index: 1
; RELOC-NEXT: Name: .bss.colliding_global2
-; RELOC-NEXT: Alignment: 4
+; RELOC-NEXT: Alignment: 2
; RELOC-NEXT: Flags: [ ]
; RELOC-NEXT: - Index: 2
; RELOC-NEXT: Name: .bss.colliding_global3
-; RELOC-NEXT: Alignment: 4
+; RELOC-NEXT: Alignment: 2
; RELOC-NEXT: Flags: [ ]
; RELOC-NEXT: - Type: CUSTOM
; RELOC-NEXT: Name: name
Modified: lld/trunk/test/wasm/many-functions.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/many-functions.ll?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/test/wasm/many-functions.ll (original)
+++ lld/trunk/test/wasm/many-functions.ll Tue Jan 15 17:43:21 2019
@@ -815,7 +815,7 @@ entry:
; CHECK-NEXT: Content: '01000000'
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
-; CHECK-NEXT: Version: 1
+; CHECK-NEXT: Version: 2
; CHECK-NEXT: SymbolTable:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Kind: FUNCTION
@@ -1482,9 +1482,9 @@ entry:
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .data.g0
-; CHECK-NEXT: Alignment: 4
+; CHECK-NEXT: Alignment: 2
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: - Index: 1
; CHECK-NEXT: Name: .data.foo
-; CHECK-NEXT: Alignment: 4
+; CHECK-NEXT: Alignment: 2
; CHECK-NEXT: Flags: [ ]
Modified: lld/trunk/test/wasm/relocatable.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/relocatable.ll?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/test/wasm/relocatable.ll (original)
+++ lld/trunk/test/wasm/relocatable.ll Tue Jan 15 17:43:21 2019
@@ -157,7 +157,7 @@ entry:
; CHECK-NEXT: Content: '616263'
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
-; CHECK-NEXT: Version: 1
+; CHECK-NEXT: Version: 2
; CHECK-NEXT: SymbolTable:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Kind: FUNCTION
@@ -232,27 +232,27 @@ entry:
; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .rodata.hello_str
-; CHECK-NEXT: Alignment: 1
+; CHECK-NEXT: Alignment: 0
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: - Index: 1
; CHECK-NEXT: Name: .data.func_addr1
-; CHECK-NEXT: Alignment: 4
+; CHECK-NEXT: Alignment: 2
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: - Index: 2
; CHECK-NEXT: Name: .data.func_addr2
-; CHECK-NEXT: Alignment: 4
+; CHECK-NEXT: Alignment: 2
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: - Index: 3
; CHECK-NEXT: Name: .data.func_addr3
-; CHECK-NEXT: Alignment: 4
+; CHECK-NEXT: Alignment: 2
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: - Index: 4
; CHECK-NEXT: Name: .data.data_addr1
-; CHECK-NEXT: Alignment: 8
+; CHECK-NEXT: Alignment: 3
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: - Index: 5
; CHECK-NEXT: Name: .rodata.data_comdat
-; CHECK-NEXT: Alignment: 1
+; CHECK-NEXT: Alignment: 0
; CHECK-NEXT: Flags: [ ]
; CHECK-NEXT: Comdats:
; CHECK-NEXT: - Name: func_comdat
Modified: lld/trunk/test/wasm/stack-pointer.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/stack-pointer.ll?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/test/wasm/stack-pointer.ll (original)
+++ lld/trunk/test/wasm/stack-pointer.ll Tue Jan 15 17:43:21 2019
@@ -50,7 +50,7 @@ entry:
; CHECK-NEXT: Body: 23808080800041106B1A41000B
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
-; CHECK-NEXT: Version: 1
+; CHECK-NEXT: Version: 2
; CHECK-NEXT: SymbolTable:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Kind: FUNCTION
Modified: lld/trunk/test/wasm/weak-alias.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/wasm/weak-alias.ll?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/test/wasm/weak-alias.ll (original)
+++ lld/trunk/test/wasm/weak-alias.ll Tue Jan 15 17:43:21 2019
@@ -250,7 +250,7 @@ entry:
; RELOC-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B
; RELOC-NEXT: - Type: CUSTOM
; RELOC-NEXT: Name: linking
-; RELOC-NEXT: Version: 1
+; RELOC-NEXT: Version: 2
; RELOC-NEXT: SymbolTable:
; RELOC-NEXT: - Index: 0
; RELOC-NEXT: Kind: FUNCTION
Modified: lld/trunk/wasm/OutputSegment.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/wasm/OutputSegment.h?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/wasm/OutputSegment.h (original)
+++ lld/trunk/wasm/OutputSegment.h Tue Jan 15 17:43:21 2019
@@ -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();
Modified: lld/trunk/wasm/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/wasm/Writer.cpp?rev=351287&r1=351286&r2=351287&view=diff
==============================================================================
--- lld/trunk/wasm/Writer.cpp (original)
+++ lld/trunk/wasm/Writer.cpp Tue Jan 15 17:43:21 2019
@@ -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));
More information about the llvm-commits
mailing list