forked from OSchip/llvm-project
[WebAssembly] Add more test coverage for reloctions against section symbols
The only known user of this relocation type and symbol type is the debug info sections, but we were not testing the `--relocatable` output path. This change adds a minimal test case to cover relocations against section symbols includes `--relocatable` output. Differential Revision: https://reviews.llvm.org/D61623 llvm-svn: 360110
This commit is contained in:
parent
c72aaf62d3
commit
5f8c2edef3
|
@ -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
|
|
@ -484,7 +484,8 @@ void MappingTraits<WasmYAML::SymbolInfo>::mapping(IO &IO,
|
|||
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);
|
||||
|
|
|
@ -532,11 +532,6 @@ int WasmWriter::writeRelocSection(raw_ostream &OS, WasmYAML::Section &Sec,
|
|||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue