Page MenuHomePhabricator

D61623.diff
No OneTemporary

File Metadata

Created
Sat, Feb 22, 9:50 PM

D61623.diff

Index: lld/trunk/test/wasm/section-symbol-relocs.yaml
===================================================================
--- lld/trunk/test/wasm/section-symbol-relocs.yaml
+++ lld/trunk/test/wasm/section-symbol-relocs.yaml
@@ -0,0 +1,51 @@
+# RUN: yaml2obj %s -o %t.o
+# RUN: llc -filetype=obj %S/Inputs/custom.ll -o %t2.o
+# RUN: wasm-ld --no-entry -o - %t2.o %t.o | obj2yaml | FileCheck %s
+# RUN: wasm-ld -r --no-entry -o - %t2.o %t.o | obj2yaml | FileCheck %s -check-prefix=RELOC
+
+--- !WASM
+FileHeader:
+ Version: 0x00000001
+Sections:
+ - Type: CUSTOM
+ Name: green
+ Payload: 'AA0000000000000000'
+ Relocations:
+ - Type: R_WASM_SECTION_OFFSET_I32
+ Index: 0
+ Offset: 0x00000001
+ - Type: R_WASM_SECTION_OFFSET_I32
+ Index: 1
+ Offset: 0x00000005
+ - Type: CUSTOM
+ Name: red
+ Payload: 'BB0000000000000000'
+ - Type: CUSTOM
+ Name: linking
+ Version: 2
+ SymbolTable:
+ - Index: 0
+ Kind: SECTION
+ Section: 0
+ Flags: [ BINDING_LOCAL ]
+ - Index: 1
+ Kind: SECTION
+ Section: 1
+ Flags: [ BINDING_LOCAL ]
+...
+
+# CHECK: Name: green
+# CHECK-NEXT: Payload: 626172717578AA0600000003000000
+# CHECK: Name: red
+# CHECK-NEXT: Payload: 666F6FBB0000000000000000
+
+# RELOC: Relocations:
+# RELOC-NEXT: - Type: R_WASM_SECTION_OFFSET_I32
+# RELOC-NEXT: Index: 0
+# RELOC-NEXT: Offset: 0x00000007
+# RELOC-NEXT: Addend: 6
+# RELOC-NEXT: - Type: R_WASM_SECTION_OFFSET_I32
+# RELOC-NEXT: Index: 1
+# RELOC-NEXT: Offset: 0x0000000B
+# RELOC-NEXT: Addend: 3
+# RELOC-NEXT: Name: green
Index: llvm/trunk/lib/ObjectYAML/WasmYAML.cpp
===================================================================
--- llvm/trunk/lib/ObjectYAML/WasmYAML.cpp
+++ llvm/trunk/lib/ObjectYAML/WasmYAML.cpp
@@ -484,7 +484,8 @@
WasmYAML::SymbolInfo &Info) {
IO.mapRequired("Index", Info.Index);
IO.mapRequired("Kind", Info.Kind);
- IO.mapRequired("Name", Info.Name);
+ if (Info.Kind != wasm::WASM_SYMBOL_TYPE_SECTION)
+ IO.mapRequired("Name", Info.Name);
IO.mapRequired("Flags", Info.Flags);
if (Info.Kind == wasm::WASM_SYMBOL_TYPE_FUNCTION) {
IO.mapRequired("Function", Info.ElementIndex);
Index: llvm/trunk/tools/yaml2obj/yaml2wasm.cpp
===================================================================
--- llvm/trunk/tools/yaml2obj/yaml2wasm.cpp
+++ llvm/trunk/tools/yaml2obj/yaml2wasm.cpp
@@ -532,11 +532,6 @@
break;
case wasm::WASM_SEC_CUSTOM: {
auto CustomSection = dyn_cast<WasmYAML::CustomSection>(&Sec);
- if (!CustomSection->Name.startswith(".debug_")) {
- llvm_unreachable("not yet implemented (only for debug sections)");
- return 1;
- }
-
writeStringRef(("reloc." + CustomSection->Name).str(), OS);
break;
}

Event Timeline