summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Object/WasmObjectFile.cpp6
-rw-r--r--llvm/test/MC/WebAssembly/custom-sections.ll4
-rw-r--r--llvm/test/ObjectYAML/wasm/custom_section.yaml4
-rw-r--r--llvm/test/tools/llvm-objdump/wasm.txt4
-rw-r--r--llvm/test/tools/llvm-readobj/sections.test4
-rw-r--r--llvm/tools/yaml2obj/yaml2wasm.cpp1
6 files changed, 14 insertions, 9 deletions
diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp
index 0c78631da25..b9eba01873c 100644
--- a/llvm/lib/Object/WasmObjectFile.cpp
+++ b/llvm/lib/Object/WasmObjectFile.cpp
@@ -178,6 +178,11 @@ static Error readSection(WasmSection &Section, const uint8_t *&Ptr,
if (Ptr + Size > Eof)
return make_error<StringError>("Section too large",
object_error::parse_failed);
+ if (Section.Type == wasm::WASM_SEC_CUSTOM) {
+ const uint8_t *NameStart = Ptr;
+ Section.Name = readString(Ptr);
+ Size -= Ptr - NameStart;
+ }
Section.Content = ArrayRef<uint8_t>(Ptr, Size);
Ptr += Size;
return Error::success();
@@ -618,7 +623,6 @@ Error WasmObjectFile::parseRelocSection(StringRef Name, const uint8_t *Ptr,
Error WasmObjectFile::parseCustomSection(WasmSection &Sec,
const uint8_t *Ptr, const uint8_t *End) {
- Sec.Name = readString(Ptr);
if (Sec.Name == "name") {
if (Error Err = parseNameSection(Ptr, End))
return Err;
diff --git a/llvm/test/MC/WebAssembly/custom-sections.ll b/llvm/test/MC/WebAssembly/custom-sections.ll
index b12afbccdb7..f479e3ddb4c 100644
--- a/llvm/test/MC/WebAssembly/custom-sections.ll
+++ b/llvm/test/MC/WebAssembly/custom-sections.ll
@@ -11,13 +11,13 @@ target triple = "wasm32-unknown-unknown-wasm"
; CHECK: Section {
; CHECK: Type: CUSTOM (0x0)
-; CHECK: Size: 7
+; CHECK: Size: 3
; CHECK: Offset: 72
; CHECK: Name: red
; CHECK: }
; CHECK: Section {
; CHECK: Type: CUSTOM (0x0)
-; CHECK: Size: 12
+; CHECK: Size: 6
; CHECK: Offset: 85
; CHECK: Name: green
; CHECK: }
diff --git a/llvm/test/ObjectYAML/wasm/custom_section.yaml b/llvm/test/ObjectYAML/wasm/custom_section.yaml
index c7b87cb4239..37cdddbff78 100644
--- a/llvm/test/ObjectYAML/wasm/custom_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/custom_section.yaml
@@ -5,7 +5,7 @@ FileHeader:
Sections:
- Type: CUSTOM
Name: foo
- Payload: 03666F6F0401020304
+ Payload: '0401020304'
...
# CHECK: --- !WASM
# CHECK: FileHeader:
@@ -13,5 +13,5 @@ Sections:
# CHECK: Sections:
# CHECK: - Type: CUSTOM
# CHECK: Name: foo
-# CHECK: Payload: 03666F6F0401020304
+# CHECK: Payload: '0401020304'
# CHECK: ...
diff --git a/llvm/test/tools/llvm-objdump/wasm.txt b/llvm/test/tools/llvm-objdump/wasm.txt
index ef6265c50a6..622df7bcd94 100644
--- a/llvm/test/tools/llvm-objdump/wasm.txt
+++ b/llvm/test/tools/llvm-objdump/wasm.txt
@@ -7,8 +7,8 @@
# CHECK-NEXT: 2 FUNCTION 00000002 0000000000000000
# CHECK-NEXT: 3 CODE 00000019 0000000000000000 TEXT
# CHECK-NEXT: 4 DATA 0000001c 0000000000000000 DATA
-# CHECK-NEXT: 5 linking 00000055 0000000000000000
-# CHECK-NEXT: 6 reloc.CODE 00000017 0000000000000000
+# CHECK-NEXT: 5 linking 0000004d 0000000000000000
+# CHECK-NEXT: 6 reloc.CODE 0000000c 0000000000000000
# RUN: llvm-objdump -p %p/Inputs/trivial.obj.wasm | FileCheck %s -check-prefix CHECK-HEADER
diff --git a/llvm/test/tools/llvm-readobj/sections.test b/llvm/test/tools/llvm-readobj/sections.test
index a243b7c5376..a5fa7f51060 100644
--- a/llvm/test/tools/llvm-readobj/sections.test
+++ b/llvm/test/tools/llvm-readobj/sections.test
@@ -528,13 +528,13 @@ WASM-NEXT: ]
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: CUSTOM (0x0)
-WASM-NEXT: Size: 65
+WASM-NEXT: Size: 57
WASM-NEXT: Offset: 191
WASM-NEXT: Name: linking
WASM-NEXT: }
WASM-NEXT: Section {
WASM-NEXT: Type: CUSTOM (0x0)
-WASM-NEXT: Size: 23
+WASM-NEXT: Size: 12
WASM-NEXT: Offset: 262
WASM-NEXT: Name: reloc.CODE
WASM-NEXT: }
diff --git a/llvm/tools/yaml2obj/yaml2wasm.cpp b/llvm/tools/yaml2obj/yaml2wasm.cpp
index bd30f88e9cb..ab1659905ab 100644
--- a/llvm/tools/yaml2obj/yaml2wasm.cpp
+++ b/llvm/tools/yaml2obj/yaml2wasm.cpp
@@ -240,6 +240,7 @@ int WasmWriter::writeSectionContent(raw_ostream &OS,
if (auto Err = writeSectionContent(OS, *S))
return Err;
} else {
+ writeStringRef(Section.Name, OS);
Section.Payload.writeAsBinary(OS);
}
return 0;
OpenPOWER on IntegriCloud