From 7dc11df1a3342a8b3ca10221fc182003d92d6295 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Wed, 16 Jan 2019 01:34:48 +0000 Subject: [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/D56758 --- llvm/include/llvm/BinaryFormat/Wasm.h | 2 +- llvm/lib/MC/WasmObjectWriter.cpp | 2 +- llvm/test/MC/WebAssembly/array-fill.ll | 2 +- llvm/test/MC/WebAssembly/assembler-binary.ll | 2 +- llvm/test/MC/WebAssembly/bss.ll | 8 ++++---- llvm/test/MC/WebAssembly/comdat.ll | 4 ++-- llvm/test/MC/WebAssembly/event-section.ll | 2 +- llvm/test/MC/WebAssembly/explicit-sections.ll | 6 +++--- llvm/test/MC/WebAssembly/function-sections.ll | 2 +- llvm/test/MC/WebAssembly/global-ctor-dtor.ll | 4 ++-- llvm/test/MC/WebAssembly/unnamed-data.ll | 10 +++++----- llvm/test/MC/WebAssembly/weak-alias.ll | 8 ++++---- llvm/test/Object/Inputs/trivial-object-test.wasm | Bin 370 -> 370 bytes llvm/test/Object/obj2yaml.test | 4 ++-- llvm/test/Object/wasm-bad-metadata-version.yaml | 2 +- llvm/test/ObjectYAML/wasm/code_section.yaml | 2 +- llvm/test/ObjectYAML/wasm/data_section.yaml | 2 +- llvm/test/ObjectYAML/wasm/event_section.yaml | 4 ++-- llvm/test/ObjectYAML/wasm/invalid_global_weak.yaml | 2 +- llvm/test/ObjectYAML/wasm/linking_section.yaml | 2 +- llvm/test/ObjectYAML/wasm/weak_symbols.yaml | 2 +- llvm/test/tools/llvm-nm/wasm/exports.yaml | 2 +- llvm/test/tools/llvm-nm/wasm/imports.yaml | 2 +- llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml | 2 +- llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm | Bin 370 -> 370 bytes llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm | Bin 341 -> 341 bytes 26 files changed, 39 insertions(+), 39 deletions(-) diff --git a/llvm/include/llvm/BinaryFormat/Wasm.h b/llvm/include/llvm/BinaryFormat/Wasm.h index 8c9810fb130..d9f0f94b298 100644 --- a/llvm/include/llvm/BinaryFormat/Wasm.h +++ b/llvm/include/llvm/BinaryFormat/Wasm.h @@ -26,7 +26,7 @@ const char WasmMagic[] = {'\0', 'a', 's', 'm'}; // Wasm binary format version const uint32_t WasmVersion = 0x1; // Wasm linking metadata version -const uint32_t WasmMetadataVersion = 0x1; +const uint32_t WasmMetadataVersion = 0x2; // Wasm uses a 64k page size const uint32_t WasmPageSize = 65536; diff --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp index c4839ffe680..0cca3757be9 100644 --- a/llvm/lib/MC/WasmObjectWriter.cpp +++ b/llvm/lib/MC/WasmObjectWriter.cpp @@ -1256,7 +1256,7 @@ uint64_t WasmObjectWriter::writeObject(MCAssembler &Asm, Segment.Offset = DataSize; Segment.Section = &Section; addData(Segment.Data, Section); - Segment.Alignment = Section.getAlignment(); + Segment.Alignment = Log2_32(Section.getAlignment()); Segment.Flags = 0; DataSize += Segment.Data.size(); Section.setSegmentIndex(SegmentIndex); diff --git a/llvm/test/MC/WebAssembly/array-fill.ll b/llvm/test/MC/WebAssembly/array-fill.ll index 7af4e740dc8..7f3d8bda346 100644 --- a/llvm/test/MC/WebAssembly/array-fill.ll +++ b/llvm/test/MC/WebAssembly/array-fill.ll @@ -22,6 +22,6 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: SegmentInfo: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Name: .data -; CHECK-NEXT: Alignment: 1 +; CHECK-NEXT: Alignment: 0 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: ... diff --git a/llvm/test/MC/WebAssembly/assembler-binary.ll b/llvm/test/MC/WebAssembly/assembler-binary.ll index 5e67b0902c7..def7f8c2879 100644 --- a/llvm/test/MC/WebAssembly/assembler-binary.ll +++ b/llvm/test/MC/WebAssembly/assembler-binary.ll @@ -77,7 +77,7 @@ entry: ; CHECK-NEXT: Body: 1080808080000B ; 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 diff --git a/llvm/test/MC/WebAssembly/bss.ll b/llvm/test/MC/WebAssembly/bss.ll index 2c0cdf289ec..1ab3ec1339b 100644 --- a/llvm/test/MC/WebAssembly/bss.ll +++ b/llvm/test/MC/WebAssembly/bss.ll @@ -64,18 +64,18 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: SegmentInfo: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Name: .bss.g0 -; CHECK-NEXT: Alignment: 4 +; CHECK-NEXT: Alignment: 2 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 1 ; CHECK-NEXT: Name: .bss.g1 -; CHECK-NEXT: Alignment: 4 +; CHECK-NEXT: Alignment: 2 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 2 ; CHECK-NEXT: Name: .bss.foo -; CHECK-NEXT: Alignment: 1 +; CHECK-NEXT: Alignment: 0 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 3 ; CHECK-NEXT: Name: .bss.bar -; CHECK-NEXT: Alignment: 1 +; CHECK-NEXT: Alignment: 0 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: ... diff --git a/llvm/test/MC/WebAssembly/comdat.ll b/llvm/test/MC/WebAssembly/comdat.ll index 369127751f3..997840a80fb 100644 --- a/llvm/test/MC/WebAssembly/comdat.ll +++ b/llvm/test/MC/WebAssembly/comdat.ll @@ -75,7 +75,7 @@ define linkonce_odr i32 @sharedFn() #1 comdat($sharedComdat) { ; 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 @@ -106,7 +106,7 @@ define linkonce_odr i32 @sharedFn() #1 comdat($sharedComdat) { ; CHECK-NEXT: SegmentInfo: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Name: .rodata.constantData -; CHECK-NEXT: Alignment: 1 +; CHECK-NEXT: Alignment: 0 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: Comdats: ; CHECK-NEXT: Name: basicInlineFn diff --git a/llvm/test/MC/WebAssembly/event-section.ll b/llvm/test/MC/WebAssembly/event-section.ll index 213817007f0..dc2e9b6a7a9 100644 --- a/llvm/test/MC/WebAssembly/event-section.ll +++ b/llvm/test/MC/WebAssembly/event-section.ll @@ -44,7 +44,7 @@ define i32 @test_throw1(i8* %p) { ; CHECK: - Type: CUSTOM ; CHECK-NEXT: Name: linking -; CHECK-NEXT: Version: 1 +; CHECK-NEXT: Version: 2 ; CHECK-NEXT: SymbolTable: ; CHECK: - Index: 1 diff --git a/llvm/test/MC/WebAssembly/explicit-sections.ll b/llvm/test/MC/WebAssembly/explicit-sections.ll index e069cee6ff4..ab2bb163fff 100644 --- a/llvm/test/MC/WebAssembly/explicit-sections.ll +++ b/llvm/test/MC/WebAssembly/explicit-sections.ll @@ -60,14 +60,14 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: SegmentInfo: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Name: .data.global0 -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 1 ; CHECK-NEXT: Name: .sec1 -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 2 ; CHECK-NEXT: Name: .sec2 -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: ... diff --git a/llvm/test/MC/WebAssembly/function-sections.ll b/llvm/test/MC/WebAssembly/function-sections.ll index 8f1e29adccf..b9b9c28376e 100644 --- a/llvm/test/MC/WebAssembly/function-sections.ll +++ b/llvm/test/MC/WebAssembly/function-sections.ll @@ -14,7 +14,7 @@ entry: ; CHECK: - 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 diff --git a/llvm/test/MC/WebAssembly/global-ctor-dtor.ll b/llvm/test/MC/WebAssembly/global-ctor-dtor.ll index a75932914eb..4dd8deb6707 100644 --- a/llvm/test/MC/WebAssembly/global-ctor-dtor.ll +++ b/llvm/test/MC/WebAssembly/global-ctor-dtor.ll @@ -110,7 +110,7 @@ declare void @func3() ; CHECK-NEXT: Content: '01040000' ; 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 @@ -170,7 +170,7 @@ declare void @func3() ; CHECK-NEXT: SegmentInfo: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Name: .data.global1 -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: InitFunctions: ; CHECK-NEXT: - Priority: 42 diff --git a/llvm/test/MC/WebAssembly/unnamed-data.ll b/llvm/test/MC/WebAssembly/unnamed-data.ll index 47949026ca8..ef7a0e5e8b7 100644 --- a/llvm/test/MC/WebAssembly/unnamed-data.ll +++ b/llvm/test/MC/WebAssembly/unnamed-data.ll @@ -44,7 +44,7 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: Content: '06000000' ; 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: DATA @@ -73,18 +73,18 @@ target triple = "wasm32-unknown-unknown" ; CHECK-NEXT: SegmentInfo: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Name: .rodata..L.str1 -; CHECK-NEXT: Alignment: 1 +; CHECK-NEXT: Alignment: 0 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 1 ; CHECK-NEXT: Name: .rodata..L.str2 -; CHECK-NEXT: Alignment: 1 +; CHECK-NEXT: Alignment: 0 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 2 ; CHECK-NEXT: Name: .data.a -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 3 ; CHECK-NEXT: Name: .data.b -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK_NEXT: ... diff --git a/llvm/test/MC/WebAssembly/weak-alias.ll b/llvm/test/MC/WebAssembly/weak-alias.ll index f0997c1efe4..ea496db5052 100644 --- a/llvm/test/MC/WebAssembly/weak-alias.ll +++ b/llvm/test/MC/WebAssembly/weak-alias.ll @@ -138,7 +138,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 @@ -197,15 +197,15 @@ entry: ; CHECK-NEXT: SegmentInfo: ; CHECK-NEXT: - Index: 0 ; CHECK-NEXT: Name: .data.bar -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 1 ; CHECK-NEXT: Name: .data.direct_address -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: - Index: 2 ; CHECK-NEXT: Name: .data.alias_address -; CHECK-NEXT: Alignment: 8 +; CHECK-NEXT: Alignment: 3 ; CHECK-NEXT: Flags: [ ] ; CHECK-NEXT: ... diff --git a/llvm/test/Object/Inputs/trivial-object-test.wasm b/llvm/test/Object/Inputs/trivial-object-test.wasm index 8652d67f692..a894522fa15 100644 Binary files a/llvm/test/Object/Inputs/trivial-object-test.wasm and b/llvm/test/Object/Inputs/trivial-object-test.wasm differ diff --git a/llvm/test/Object/obj2yaml.test b/llvm/test/Object/obj2yaml.test index 46a0d773636..5accdd45693 100644 --- a/llvm/test/Object/obj2yaml.test +++ b/llvm/test/Object/obj2yaml.test @@ -651,7 +651,7 @@ WASM-NEXT: FileHeader: WASM-NEXT: Version: 0x00000001 WASM: - Type: CUSTOM WASM-NEXT: Name: linking -WASM-NEXT: Version: 1 +WASM-NEXT: Version: 2 WASM-NEXT: SymbolTable: WASM-NEXT: - Index: 0 WASM-NEXT: Kind: FUNCTION @@ -675,7 +675,7 @@ WASM: Name: var WASM: SegmentInfo: WASM-NEXT: - Index: 0 WASM-NEXT: Name: .rodata..L.str -WASM-NEXT: Alignment: 1 +WASM-NEXT: Alignment: 0 WASM-NEXT: Flags: [ ] WASM-NEXT: - Index: 1 WASM: ... diff --git a/llvm/test/Object/wasm-bad-metadata-version.yaml b/llvm/test/Object/wasm-bad-metadata-version.yaml index b2970bb59ea..7bda5b8d13a 100644 --- a/llvm/test/Object/wasm-bad-metadata-version.yaml +++ b/llvm/test/Object/wasm-bad-metadata-version.yaml @@ -8,4 +8,4 @@ Sections: Name: linking Version: 0 -# CHECK: {{.*}}: Unexpected metadata version: 0 (Expected: 1) +# CHECK: {{.*}}: Unexpected metadata version: 0 (Expected: 2) diff --git a/llvm/test/ObjectYAML/wasm/code_section.yaml b/llvm/test/ObjectYAML/wasm/code_section.yaml index 0d7cf61638b..1a63ce55150 100644 --- a/llvm/test/ObjectYAML/wasm/code_section.yaml +++ b/llvm/test/ObjectYAML/wasm/code_section.yaml @@ -39,7 +39,7 @@ Sections: Body: 108180808000210020000F0B - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: FUNCTION diff --git a/llvm/test/ObjectYAML/wasm/data_section.yaml b/llvm/test/ObjectYAML/wasm/data_section.yaml index ef5945dcaac..aa18301ca22 100644 --- a/llvm/test/ObjectYAML/wasm/data_section.yaml +++ b/llvm/test/ObjectYAML/wasm/data_section.yaml @@ -24,7 +24,7 @@ Sections: Addend: -6 - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: DATA diff --git a/llvm/test/ObjectYAML/wasm/event_section.yaml b/llvm/test/ObjectYAML/wasm/event_section.yaml index 017efda056c..f026899ac72 100644 --- a/llvm/test/ObjectYAML/wasm/event_section.yaml +++ b/llvm/test/ObjectYAML/wasm/event_section.yaml @@ -32,7 +32,7 @@ Sections: Body: 200008808080800041000B - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: FUNCTION @@ -78,7 +78,7 @@ Sections: # CHECK-NEXT: Body: 200008808080800041000B # 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 diff --git a/llvm/test/ObjectYAML/wasm/invalid_global_weak.yaml b/llvm/test/ObjectYAML/wasm/invalid_global_weak.yaml index c364075e2e4..4566e8f0f00 100644 --- a/llvm/test/ObjectYAML/wasm/invalid_global_weak.yaml +++ b/llvm/test/ObjectYAML/wasm/invalid_global_weak.yaml @@ -13,7 +13,7 @@ Sections: GlobalMutable: false - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: GLOBAL diff --git a/llvm/test/ObjectYAML/wasm/linking_section.yaml b/llvm/test/ObjectYAML/wasm/linking_section.yaml index d1f0243037d..69817f50970 100644 --- a/llvm/test/ObjectYAML/wasm/linking_section.yaml +++ b/llvm/test/ObjectYAML/wasm/linking_section.yaml @@ -29,7 +29,7 @@ Sections: Content: '11110000' - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: FUNCTION diff --git a/llvm/test/ObjectYAML/wasm/weak_symbols.yaml b/llvm/test/ObjectYAML/wasm/weak_symbols.yaml index 3e9ca34deac..fb85b829a37 100644 --- a/llvm/test/ObjectYAML/wasm/weak_symbols.yaml +++ b/llvm/test/ObjectYAML/wasm/weak_symbols.yaml @@ -36,7 +36,7 @@ Sections: Body: 00 - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: FUNCTION diff --git a/llvm/test/tools/llvm-nm/wasm/exports.yaml b/llvm/test/tools/llvm-nm/wasm/exports.yaml index 55d2b76470a..c1ee6d7cf58 100644 --- a/llvm/test/tools/llvm-nm/wasm/exports.yaml +++ b/llvm/test/tools/llvm-nm/wasm/exports.yaml @@ -37,7 +37,7 @@ Sections: Content: '616263' - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: FUNCTION diff --git a/llvm/test/tools/llvm-nm/wasm/imports.yaml b/llvm/test/tools/llvm-nm/wasm/imports.yaml index 9696972de4d..2ea0d0f13fe 100644 --- a/llvm/test/tools/llvm-nm/wasm/imports.yaml +++ b/llvm/test/tools/llvm-nm/wasm/imports.yaml @@ -25,7 +25,7 @@ Sections: GlobalMutable: false - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: FUNCTION diff --git a/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml b/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml index caa981df436..36711b17b98 100644 --- a/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml +++ b/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml @@ -43,7 +43,7 @@ Sections: Content: '616263' - Type: CUSTOM Name: linking - Version: 1 + Version: 2 SymbolTable: - Index: 0 Kind: DATA diff --git a/llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm b/llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm index 8652d67f692..a894522fa15 100644 Binary files a/llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm and b/llvm/test/tools/llvm-objdump/Inputs/trivial.obj.wasm differ diff --git a/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm b/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm index 2f99d344612..10ebbeed6ac 100644 Binary files a/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm and b/llvm/test/tools/llvm-readobj/Inputs/trivial.obj.wasm differ -- cgit v1.2.3