Reland "[WebAssembly] Add support for naming wasm data segments"
Add adds support for naming data segments. This is useful
useful linkers so that they can merge similar sections.
Differential Revision: https://reviews.llvm.org/D37886
llvm-svn: 313795
diff --git a/llvm/test/MC/WebAssembly/array-fill.ll b/llvm/test/MC/WebAssembly/array-fill.ll
index 4feabc0..38274c3 100644
--- a/llvm/test/MC/WebAssembly/array-fill.ll
+++ b/llvm/test/MC/WebAssembly/array-fill.ll
@@ -9,6 +9,14 @@
@gBd = hidden global [2 x %struct.bd] [%struct.bd { i8 1 }, %struct.bd { i8 2 }], align 1
-; CHECK: - Type: DATA
-; CHECK: Content: '0102'
-; CHECK: DataSize: 2
+; CHECK: - Type: DATA
+; CHECK: Content: '0102'
+
+; CHECK: - Type: CUSTOM
+; CHECK-NEXT: Name: linking
+; CHECK-NEXT: DataSize: 2
+; CHECK-NEXT: DataAlignment: 1
+; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Name: .data
+; CHECK-NEXT: ...
diff --git a/llvm/test/MC/WebAssembly/bss.ll b/llvm/test/MC/WebAssembly/bss.ll
new file mode 100644
index 0000000..d203efa
--- /dev/null
+++ b/llvm/test/MC/WebAssembly/bss.ll
@@ -0,0 +1,20 @@
+; RUN: llc -mtriple wasm32-unknown-unknown-wasm -filetype=obj %s -o - | obj2yaml | FileCheck %s
+
+@g0 = global i8* null, align 4
+
+; CHECK: - Type: DATA
+; CHECK-NEXT: Segments:
+; CHECK-NEXT: - SectionOffset: 6
+; CHECK-NEXT: MemoryIndex: 0
+; CHECK-NEXT: Offset:
+; CHECK-NEXT: Opcode: I32_CONST
+; CHECK-NEXT: Value: 0
+; CHECK-NEXT: Content: '00000000'
+; CHECK-NEXT: - Type: CUSTOM
+; CHECK-NEXT: Name: linking
+; CHECK-NEXT: DataSize: 4
+; CHECK-NEXT: DataAlignment: 4
+; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Name: .bss.g0
+; CHECK-NEXT: ...
diff --git a/llvm/test/MC/WebAssembly/explicit-sections.ll b/llvm/test/MC/WebAssembly/explicit-sections.ll
index e960724..a8342b6 100644
--- a/llvm/test/MC/WebAssembly/explicit-sections.ll
+++ b/llvm/test/MC/WebAssembly/explicit-sections.ll
@@ -63,3 +63,16 @@
; CHECK-NEXT: Opcode: I32_CONST
; CHECK-NEXT: Value: 24
; CHECK-NEXT: Content: '08000000'
+
+; CHECK: - Type: CUSTOM
+; CHECK-NEXT: Name: linking
+; CHECK-NEXT: DataSize: 28
+; CHECK-NEXT: DataAlignment: 8
+; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Name: .data.global0
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Name: .sec1
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Name: .sec2
+; CHECK-NEXT: ...
diff --git a/llvm/test/MC/WebAssembly/unnamed-data.ll b/llvm/test/MC/WebAssembly/unnamed-data.ll
index b5f6d3c..a484913 100644
--- a/llvm/test/MC/WebAssembly/unnamed-data.ll
+++ b/llvm/test/MC/WebAssembly/unnamed-data.ll
@@ -74,4 +74,13 @@
; CHECK-NEXT: Name: linking
; CHECK-NEXT: DataSize: 28
; CHECK-NEXT: DataAlignment: 8
+; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Name: .rodata..L.str1
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Name: .rodata..L.str2
+; CHECK-NEXT: - Index: 2
+; CHECK-NEXT: Name: .data.a
+; CHECK-NEXT: - Index: 3
+; CHECK-NEXT: Name: .data.b
; CHECK-NEXT: ...
diff --git a/llvm/test/MC/WebAssembly/weak-alias.ll b/llvm/test/MC/WebAssembly/weak-alias.ll
index 79c597b..2beef84 100644
--- a/llvm/test/MC/WebAssembly/weak-alias.ll
+++ b/llvm/test/MC/WebAssembly/weak-alias.ll
@@ -101,4 +101,9 @@
; CHECK-NEXT: Flags: 1
; CHECK-NEXT: - Name: bar_alias
; CHECK-NEXT: Flags: 1
+; CHECK-NEXT: SegmentNames:
+; CHECK-NEXT: - Index: 0
+; CHECK-NEXT: Name: .data.bar
+; CHECK-NEXT: - Index: 1
+; CHECK-NEXT: Name: .data.bar_alias_address
; CHECK-NEXT: ...
diff --git a/llvm/test/tools/llvm-readobj/sections.test b/llvm/test/tools/llvm-readobj/sections.test
index 4eda5da..ac1eca53 100644
--- a/llvm/test/tools/llvm-readobj/sections.test
+++ b/llvm/test/tools/llvm-readobj/sections.test
@@ -543,6 +543,12 @@
WASM-NEXT: Type: DATA (0xB)
WASM-NEXT: Size: 19
WASM-NEXT: Offset: 154
+WASM-NEXT: Segments [
+WASM-NEXT: Segment {
+WASM-NEXT: Size: 13
+WASM-NEXT: Offset: 0
+WASM-NEXT: }
+WASM-NEXT: ]
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: CUSTOM (0x0)