diff --git a/lld/test/wasm/section-symbol-relocs.yaml b/lld/test/wasm/section-symbol-relocs.yaml new file mode 100644 --- /dev/null +++ b/lld/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 diff --git a/llvm/lib/ObjectYAML/WasmYAML.cpp b/llvm/lib/ObjectYAML/WasmYAML.cpp --- a/llvm/lib/ObjectYAML/WasmYAML.cpp +++ b/llvm/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);