[llvm] r314534 - [WebAssembly] Allow each data segment to specify its own alignment
Sam Clegg via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 29 09:50:08 PDT 2017
Author: sbc
Date: Fri Sep 29 09:50:08 2017
New Revision: 314534
URL: http://llvm.org/viewvc/llvm-project?rev=314534&view=rev
Log:
[WebAssembly] Allow each data segment to specify its own alignment
Also, add a flags field as we will almost certainly
be needing that soon too.
Differential Revision: https://reviews.llvm.org/D38296
Modified:
llvm/trunk/include/llvm/BinaryFormat/Wasm.h
llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h
llvm/trunk/lib/MC/WasmObjectWriter.cpp
llvm/trunk/lib/Object/WasmObjectFile.cpp
llvm/trunk/lib/ObjectYAML/WasmYAML.cpp
llvm/trunk/test/MC/WebAssembly/array-fill.ll
llvm/trunk/test/MC/WebAssembly/bss.ll
llvm/trunk/test/MC/WebAssembly/explicit-sections.ll
llvm/trunk/test/MC/WebAssembly/unnamed-data.ll
llvm/trunk/test/MC/WebAssembly/weak-alias.ll
llvm/trunk/test/MC/WebAssembly/weak.ll
llvm/trunk/test/ObjectYAML/wasm/weak_symbols.yaml
llvm/trunk/test/tools/llvm-nm/wasm/exports.yaml
llvm/trunk/test/tools/llvm-nm/wasm/imports.yaml
llvm/trunk/test/tools/llvm-nm/wasm/weak-symbols.yaml
llvm/trunk/test/tools/llvm-readobj/sections.test
llvm/trunk/tools/llvm-readobj/WasmDumper.cpp
llvm/trunk/tools/obj2yaml/wasm2yaml.cpp
llvm/trunk/tools/yaml2obj/yaml2wasm.cpp
Modified: llvm/trunk/include/llvm/BinaryFormat/Wasm.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/BinaryFormat/Wasm.h?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/include/llvm/BinaryFormat/Wasm.h (original)
+++ llvm/trunk/include/llvm/BinaryFormat/Wasm.h Fri Sep 29 09:50:08 2017
@@ -98,6 +98,8 @@ struct WasmDataSegment {
WasmInitExpr Offset;
ArrayRef<uint8_t> Content;
StringRef Name;
+ uint32_t Alignment;
+ uint32_t Flags;
};
struct WasmElemSegment {
@@ -115,7 +117,6 @@ struct WasmRelocation {
struct WasmLinkingData {
uint32_t DataSize;
- uint32_t DataAlignment;
};
enum : unsigned {
@@ -185,7 +186,7 @@ enum : unsigned {
WASM_SYMBOL_INFO = 0x2,
WASM_DATA_SIZE = 0x3,
WASM_DATA_ALIGNMENT = 0x4,
- WASM_SEGMENT_NAMES = 0x5,
+ WASM_SEGMENT_INFO = 0x5,
};
const unsigned WASM_SYMBOL_BINDING_MASK = 0x3;
Modified: llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h (original)
+++ llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h Fri Sep 29 09:50:08 2017
@@ -109,6 +109,13 @@ struct NameEntry {
StringRef Name;
};
+struct SegmentInfo {
+ uint32_t Index;
+ StringRef Name;
+ uint32_t Alignment;
+ uint32_t Flags;
+};
+
struct Signature {
uint32_t Index;
SignatureForm Form = wasm::WASM_TYPE_FUNC;
@@ -161,9 +168,8 @@ struct LinkingSection : CustomSection {
}
uint32_t DataSize;
- uint32_t DataAlignment;
std::vector<SymbolInfo> SymbolInfos;
- std::vector<NameEntry> SegmentNames;
+ std::vector<SegmentInfo> SegmentInfos;
};
struct TypeSection : Section {
@@ -298,6 +304,7 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmY
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::LocalDecl)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::Relocation)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::NameEntry)
+LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::SegmentInfo)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::SymbolInfo)
namespace llvm {
@@ -355,6 +362,10 @@ template <> struct MappingTraits<WasmYAM
static void mapping(IO &IO, WasmYAML::NameEntry &NameEntry);
};
+template <> struct MappingTraits<WasmYAML::SegmentInfo> {
+ static void mapping(IO &IO, WasmYAML::SegmentInfo &SegmentInfo);
+};
+
template <> struct MappingTraits<WasmYAML::LocalDecl> {
static void mapping(IO &IO, WasmYAML::LocalDecl &LocalDecl);
};
Modified: llvm/trunk/lib/MC/WasmObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WasmObjectWriter.cpp?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/lib/MC/WasmObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/WasmObjectWriter.cpp Fri Sep 29 09:50:08 2017
@@ -104,6 +104,8 @@ struct WasmDataSegment {
MCSectionWasm *Section;
StringRef Name;
uint32_t Offset;
+ uint32_t Alignment;
+ uint32_t Flags;
SmallVector<char, 4> Data;
};
@@ -282,7 +284,6 @@ private:
void writeDataRelocSection();
void writeLinkingMetaDataSection(
ArrayRef<WasmDataSegment> Segments, uint32_t DataSize,
- uint32_t DataAlignment,
SmallVector<std::pair<StringRef, uint32_t>, 4> SymbolFlags,
bool HasStackPointer, uint32_t StackPointerGlobal);
@@ -499,11 +500,11 @@ WasmObjectWriter::getProvisionalValue(co
}
static void addData(SmallVectorImpl<char> &DataBytes,
- MCSectionWasm &DataSection, uint32_t &DataAlignment) {
- DataBytes.resize(alignTo(DataBytes.size(), DataSection.getAlignment()));
- DataAlignment = std::max(DataAlignment, DataSection.getAlignment());
+ MCSectionWasm &DataSection) {
DEBUG(errs() << "addData: " << DataSection.getSectionName() << "\n");
+ DataBytes.resize(alignTo(DataBytes.size(), DataSection.getAlignment()));
+
for (const MCFragment &Frag : DataSection) {
if (Frag.hasInstructions())
report_fatal_error("only data supported in data sections");
@@ -914,7 +915,6 @@ void WasmObjectWriter::writeDataRelocSec
void WasmObjectWriter::writeLinkingMetaDataSection(
ArrayRef<WasmDataSegment> Segments, uint32_t DataSize,
- uint32_t DataAlignment,
SmallVector<std::pair<StringRef, uint32_t>, 4> SymbolFlags,
bool HasStackPointer, uint32_t StackPointerGlobal) {
SectionBookkeeping Section;
@@ -941,17 +941,16 @@ void WasmObjectWriter::writeLinkingMetaD
startSection(SubSection, wasm::WASM_DATA_SIZE);
encodeULEB128(DataSize, getStream());
endSection(SubSection);
-
- startSection(SubSection, wasm::WASM_DATA_ALIGNMENT);
- encodeULEB128(DataAlignment, getStream());
- endSection(SubSection);
}
if (Segments.size()) {
- startSection(SubSection, wasm::WASM_SEGMENT_NAMES);
+ startSection(SubSection, wasm::WASM_SEGMENT_INFO);
encodeULEB128(Segments.size(), getStream());
- for (const WasmDataSegment &Segment : Segments)
+ for (const WasmDataSegment &Segment : Segments) {
writeString(Segment.Name);
+ encodeULEB128(Segment.Alignment, getStream());
+ encodeULEB128(Segment.Flags, getStream());
+ }
endSection(SubSection);
}
@@ -998,7 +997,6 @@ void WasmObjectWriter::writeObject(MCAss
SmallPtrSet<const MCSymbolWasm *, 4> IsAddressTaken;
unsigned NumFuncImports = 0;
SmallVector<WasmDataSegment, 4> DataSegments;
- uint32_t DataAlignment = 1;
uint32_t StackPointerGlobal = 0;
uint32_t DataSize = 0;
bool HasStackPointer = false;
@@ -1144,7 +1142,9 @@ void WasmObjectWriter::writeObject(MCAss
Segment.Name = Section.getSectionName();
Segment.Offset = DataSize;
Segment.Section = &Section;
- addData(Segment.Data, Section, DataAlignment);
+ addData(Segment.Data, Section);
+ Segment.Alignment = Section.getAlignment();
+ Segment.Flags = 0;
DataSize += Segment.Data.size();
Section.setMemoryOffset(Segment.Offset);
}
@@ -1308,8 +1308,8 @@ void WasmObjectWriter::writeObject(MCAss
writeNameSection(Functions, Imports, NumFuncImports);
writeCodeRelocSection();
writeDataRelocSection();
- writeLinkingMetaDataSection(DataSegments, DataSize, DataAlignment,
- SymbolFlags, HasStackPointer, StackPointerGlobal);
+ writeLinkingMetaDataSection(DataSegments, DataSize, SymbolFlags,
+ HasStackPointer, StackPointerGlobal);
// TODO: Translate the .comment section to the output.
// TODO: Translate debug sections to the output.
Modified: llvm/trunk/lib/Object/WasmObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/WasmObjectFile.cpp?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/lib/Object/WasmObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/WasmObjectFile.cpp Fri Sep 29 09:50:08 2017
@@ -193,7 +193,6 @@ static Error readSection(WasmSection &Se
WasmObjectFile::WasmObjectFile(MemoryBufferRef Buffer, Error &Err)
: ObjectFile(Binary::ID_Wasm, Buffer) {
- LinkingData.DataAlignment = 0;
LinkingData.DataSize = 0;
ErrorAsOutParameter ErrAsOutParam(&Err);
@@ -385,16 +384,16 @@ Error WasmObjectFile::parseLinkingSectio
case wasm::WASM_DATA_SIZE:
LinkingData.DataSize = readVaruint32(Ptr);
break;
- case wasm::WASM_DATA_ALIGNMENT:
- LinkingData.DataAlignment = readVaruint32(Ptr);
- break;
- case wasm::WASM_SEGMENT_NAMES: {
+ case wasm::WASM_SEGMENT_INFO: {
uint32_t Count = readVaruint32(Ptr);
if (Count > DataSegments.size())
return make_error<GenericBinaryError>("Too many segment names",
object_error::parse_failed);
- for (uint32_t i = 0; i < Count; i++)
+ for (uint32_t i = 0; i < Count; i++) {
DataSegments[i].Data.Name = readString(Ptr);
+ DataSegments[i].Data.Alignment = readVaruint32(Ptr);
+ DataSegments[i].Data.Flags = readVaruint32(Ptr);
+ }
break;
}
case wasm::WASM_STACK_POINTER:
@@ -734,6 +733,8 @@ Error WasmObjectFile::parseDataSection(c
return Err;
uint32_t Size = readVaruint32(Ptr);
Segment.Data.Content = ArrayRef<uint8_t>(Ptr, Size);
+ Segment.Data.Alignment = 0;
+ Segment.Data.Flags = 0;
Segment.SectionOffset = Ptr - Start;
Ptr += Size;
DataSegments.push_back(Segment);
Modified: llvm/trunk/lib/ObjectYAML/WasmYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/WasmYAML.cpp?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/lib/ObjectYAML/WasmYAML.cpp (original)
+++ llvm/trunk/lib/ObjectYAML/WasmYAML.cpp Fri Sep 29 09:50:08 2017
@@ -58,9 +58,8 @@ static void sectionMapping(IO &IO, WasmY
commonSectionMapping(IO, Section);
IO.mapRequired("Name", Section.Name);
IO.mapRequired("DataSize", Section.DataSize);
- IO.mapRequired("DataAlignment", Section.DataAlignment);
IO.mapOptional("SymbolInfo", Section.SymbolInfos);
- IO.mapOptional("SegmentNames", Section.SegmentNames);
+ IO.mapOptional("SegmentInfo", Section.SegmentInfos);
}
static void sectionMapping(IO &IO, WasmYAML::CustomSection &Section) {
@@ -266,6 +265,14 @@ void MappingTraits<WasmYAML::NameEntry>:
IO.mapRequired("Name", NameEntry.Name);
}
+void MappingTraits<WasmYAML::SegmentInfo>::mapping(
+ IO &IO, WasmYAML::SegmentInfo &SegmentInfo) {
+ IO.mapRequired("Index", SegmentInfo.Index);
+ IO.mapRequired("Name", SegmentInfo.Name);
+ IO.mapRequired("Alignment", SegmentInfo.Alignment);
+ IO.mapRequired("Flags", SegmentInfo.Flags);
+}
+
void MappingTraits<WasmYAML::LocalDecl>::mapping(
IO &IO, WasmYAML::LocalDecl &LocalDecl) {
IO.mapRequired("Type", LocalDecl.Type);
Modified: llvm/trunk/test/MC/WebAssembly/array-fill.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/array-fill.ll?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/array-fill.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/array-fill.ll Fri Sep 29 09:50:08 2017
@@ -15,8 +15,9 @@ target triple = "wasm32-unknown-unknown-
; CHECK: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 2
-; CHECK-NEXT: DataAlignment: 1
-; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .data
+; CHECK-NEXT: Alignment: 1
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: ...
Modified: llvm/trunk/test/MC/WebAssembly/bss.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/bss.ll?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/bss.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/bss.ll Fri Sep 29 09:50:08 2017
@@ -13,8 +13,9 @@
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 4
-; CHECK-NEXT: DataAlignment: 4
-; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .bss.g0
+; CHECK-NEXT: Alignment: 4
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: ...
Modified: llvm/trunk/test/MC/WebAssembly/explicit-sections.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/explicit-sections.ll?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/explicit-sections.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/explicit-sections.ll Fri Sep 29 09:50:08 2017
@@ -67,12 +67,17 @@
; CHECK: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 28
-; CHECK-NEXT: DataAlignment: 8
-; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .data.global0
+; CHECK-NEXT: Alignment: 8
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: - Index: 1
; CHECK-NEXT: Name: .sec1
+; CHECK-NEXT: Alignment: 8
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: - Index: 2
; CHECK-NEXT: Name: .sec2
+; CHECK-NEXT: Alignment: 8
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: ...
Modified: llvm/trunk/test/MC/WebAssembly/unnamed-data.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/unnamed-data.ll?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/unnamed-data.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/unnamed-data.ll Fri Sep 29 09:50:08 2017
@@ -79,19 +79,26 @@
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 28
-; CHECK-NEXT: DataAlignment: 8
; CHECK-NEXT: SymbolInfo:
; CHECK-NEXT: - Name: .L.str1
; CHECK-NEXT: Flags: 2
; CHECK-NEXT: - Name: .L.str2
; CHECK-NEXT: Flags: 2
-; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .rodata..L.str1
+; CHECK-NEXT: Alignment: 1
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: - Index: 1
; CHECK-NEXT: Name: .rodata..L.str2
+; CHECK-NEXT: Alignment: 1
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: - Index: 2
; CHECK-NEXT: Name: .data.a
+; CHECK-NEXT: Alignment: 8
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: - Index: 3
; CHECK-NEXT: Name: .data.b
+; CHECK-NEXT: Alignment: 8
+; CHECK-NEXT: Flags: 0
; CHECK_NEXT: ...
Modified: llvm/trunk/test/MC/WebAssembly/weak-alias.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/weak-alias.ll?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/weak-alias.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/weak-alias.ll Fri Sep 29 09:50:08 2017
@@ -101,17 +101,20 @@ entry:
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 12
-; CHECK-NEXT: DataAlignment: 8
; CHECK-NEXT: SymbolInfo:
; CHECK-NEXT: - Name: foo_alias
; CHECK-NEXT: Flags: 1
; CHECK-NEXT: - Name: bar_alias
; CHECK-NEXT: Flags: 1
-; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: SegmentInfo:
; CHECK-NEXT: - Index: 0
; CHECK-NEXT: Name: .data.bar
+; CHECK-NEXT: Alignment: 8
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: - Index: 1
; CHECK-NEXT: Name: .data.bar_alias_address
+; CHECK-NEXT: Alignment: 8
+; CHECK-NEXT: Flags: 0
; CHECK-NEXT: ...
; CHECK-SYMS: SYMBOL TABLE:
Modified: llvm/trunk/test/MC/WebAssembly/weak.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/weak.ll?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/weak.ll (original)
+++ llvm/trunk/test/MC/WebAssembly/weak.ll Fri Sep 29 09:50:08 2017
@@ -27,7 +27,6 @@ entry:
; CHECK-NEXT: - Type: CUSTOM
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 0
-; CHECK-NEXT: DataAlignment: 0
; CHECK-NEXT: SymbolInfo:
; CHECK-NEXT: - Name: weak_external_data
; CHECK-NEXT: Flags: 1
Modified: llvm/trunk/test/ObjectYAML/wasm/weak_symbols.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ObjectYAML/wasm/weak_symbols.yaml?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/ObjectYAML/wasm/weak_symbols.yaml (original)
+++ llvm/trunk/test/ObjectYAML/wasm/weak_symbols.yaml Fri Sep 29 09:50:08 2017
@@ -27,7 +27,6 @@ Sections:
- Type: CUSTOM
Name: linking
DataSize: 10
- DataAlignment: 2
SymbolInfo:
- Name: function_export
Flags: 1
@@ -49,7 +48,6 @@ Sections:
# CHECK: - Type: CUSTOM
# CHECK: Name: linking
# CHECK: DataSize: 10
-# CHECK: DataAlignment: 2
# CHECK: SymbolInfo:
# CHECK: - Name: function_export
# CHECK: Flags: 1
Modified: llvm/trunk/test/tools/llvm-nm/wasm/exports.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-nm/wasm/exports.yaml?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-nm/wasm/exports.yaml (original)
+++ llvm/trunk/test/tools/llvm-nm/wasm/exports.yaml Fri Sep 29 09:50:08 2017
@@ -53,7 +53,6 @@ Sections:
- Type: CUSTOM
Name: "linking"
DataSize: 0
- DataAlignment: 0
# CHECK: 00000400 D bar
# CHECK-NEXT: U fimport
Modified: llvm/trunk/test/tools/llvm-nm/wasm/imports.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-nm/wasm/imports.yaml?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-nm/wasm/imports.yaml (original)
+++ llvm/trunk/test/tools/llvm-nm/wasm/imports.yaml Fri Sep 29 09:50:08 2017
@@ -23,7 +23,6 @@ Sections:
- Type: CUSTOM
Name: "linking"
DataSize: 0
- DataAlignment: 0
# CHECK: U bar
# CHECK: U foo
Modified: llvm/trunk/test/tools/llvm-nm/wasm/weak-symbols.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-nm/wasm/weak-symbols.yaml?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-nm/wasm/weak-symbols.yaml (original)
+++ llvm/trunk/test/tools/llvm-nm/wasm/weak-symbols.yaml Fri Sep 29 09:50:08 2017
@@ -53,7 +53,6 @@ Sections:
- Type: CUSTOM
Name: linking
DataSize: 0
- DataAlignment: 2
SymbolInfo:
- Name: weak_global_func
Flags: 1
Modified: llvm/trunk/test/tools/llvm-readobj/sections.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/sections.test?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/sections.test (original)
+++ llvm/trunk/test/tools/llvm-readobj/sections.test Fri Sep 29 09:50:08 2017
@@ -568,6 +568,5 @@ WASM-NEXT: Size: 22
WASM-NEXT: Offset: 257
WASM-NEXT: Name: linking
WASM-NEXT: DataSize: 13
-WASM-NEXT: DataAlignment: 1
WASM-NEXT: }
WASM-NEXT: ]
Modified: llvm/trunk/tools/llvm-readobj/WasmDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/WasmDumper.cpp?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/WasmDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/WasmDumper.cpp Fri Sep 29 09:50:08 2017
@@ -156,8 +156,6 @@ void WasmDumper::printSections() {
if (WasmSec.Name == "linking") {
const wasm::WasmLinkingData &LinkingData = Obj->linkingData();
W.printNumber("DataSize", LinkingData.DataSize);
- if (LinkingData.DataAlignment)
- W.printNumber("DataAlignment", LinkingData.DataAlignment);
}
break;
case wasm::WASM_SEC_DATA: {
Modified: llvm/trunk/tools/obj2yaml/wasm2yaml.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/obj2yaml/wasm2yaml.cpp?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/tools/obj2yaml/wasm2yaml.cpp (original)
+++ llvm/trunk/tools/obj2yaml/wasm2yaml.cpp Fri Sep 29 09:50:08 2017
@@ -68,10 +68,12 @@ std::unique_ptr<WasmYAML::CustomSection>
size_t Index = 0;
for (const object::WasmSegment &Segment : Obj.dataSegments()) {
if (!Segment.Data.Name.empty()) {
- WasmYAML::NameEntry NameEntry;
- NameEntry.Name = Segment.Data.Name;
- NameEntry.Index = Index;
- LinkingSec->SegmentNames.push_back(NameEntry);
+ WasmYAML::SegmentInfo SegmentInfo;
+ SegmentInfo.Name = Segment.Data.Name;
+ SegmentInfo.Index = Index;
+ SegmentInfo.Alignment = Segment.Data.Alignment;
+ SegmentInfo.Flags = Segment.Data.Flags;
+ LinkingSec->SegmentInfos.push_back(SegmentInfo);
}
Index++;
}
@@ -83,7 +85,6 @@ std::unique_ptr<WasmYAML::CustomSection>
}
}
LinkingSec->DataSize = Obj.linkingData().DataSize;
- LinkingSec->DataAlignment = Obj.linkingData().DataAlignment;
CustomSec = std::move(LinkingSec);
} else {
CustomSec = make_unique<WasmYAML::CustomSection>(WasmSec.Name);
Modified: llvm/trunk/tools/yaml2obj/yaml2wasm.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2wasm.cpp?rev=314534&r1=314533&r2=314534&view=diff
==============================================================================
--- llvm/trunk/tools/yaml2obj/yaml2wasm.cpp (original)
+++ llvm/trunk/tools/yaml2obj/yaml2wasm.cpp Fri Sep 29 09:50:08 2017
@@ -140,11 +140,6 @@ int WasmWriter::writeSectionContent(raw_
encodeULEB128(Section.DataSize, SubSection.GetStream());
SubSection.Done();
- // DATA_ALIGNMENT subsection
- encodeULEB128(wasm::WASM_DATA_ALIGNMENT, OS);
- encodeULEB128(Section.DataAlignment, SubSection.GetStream());
- SubSection.Done();
-
// SYMBOL_INFO subsection
if (Section.SymbolInfos.size()) {
encodeULEB128(wasm::WASM_SYMBOL_INFO, OS);
@@ -159,12 +154,14 @@ int WasmWriter::writeSectionContent(raw_
}
// SEGMENT_NAMES subsection
- if (Section.SegmentNames.size()) {
- encodeULEB128(wasm::WASM_SEGMENT_NAMES, OS);
- encodeULEB128(Section.SegmentNames.size(), SubSection.GetStream());
- for (const WasmYAML::NameEntry &NameEntry : Section.SegmentNames) {
- encodeULEB128(NameEntry.Index, SubSection.GetStream());
- writeStringRef(NameEntry.Name, SubSection.GetStream());
+ if (Section.SegmentInfos.size()) {
+ encodeULEB128(wasm::WASM_SEGMENT_INFO, OS);
+ encodeULEB128(Section.SegmentInfos.size(), SubSection.GetStream());
+ for (const WasmYAML::SegmentInfo &SegmentInfo : Section.SegmentInfos) {
+ encodeULEB128(SegmentInfo.Index, SubSection.GetStream());
+ writeStringRef(SegmentInfo.Name, SubSection.GetStream());
+ encodeULEB128(SegmentInfo.Alignment, SubSection.GetStream());
+ encodeULEB128(SegmentInfo.Flags, SubSection.GetStream());
}
SubSection.Done();
}
More information about the llvm-commits
mailing list