diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/ObjectYAML/WasmYAML.h | 2 | ||||
-rw-r--r-- | llvm/lib/Object/WasmObjectFile.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/ObjectYAML/WasmYAML.cpp | 2 | ||||
-rw-r--r-- | llvm/test/ObjectYAML/wasm/code_section.yaml | 4 | ||||
-rw-r--r-- | llvm/test/ObjectYAML/wasm/data_section.yaml | 32 |
5 files changed, 30 insertions, 15 deletions
diff --git a/llvm/include/llvm/ObjectYAML/WasmYAML.h b/llvm/include/llvm/ObjectYAML/WasmYAML.h index b1af8bbdfa6..dfeeb8589f8 100644 --- a/llvm/include/llvm/ObjectYAML/WasmYAML.h +++ b/llvm/include/llvm/ObjectYAML/WasmYAML.h @@ -88,7 +88,7 @@ struct Relocation { RelocType Type; uint32_t Index; yaml::Hex32 Offset; - yaml::Hex32 Addend; + int32_t Addend; }; struct DataSegment { diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp index e1b3c4e1f39..4e1f237e17c 100644 --- a/llvm/lib/Object/WasmObjectFile.cpp +++ b/llvm/lib/Object/WasmObjectFile.cpp @@ -316,14 +316,15 @@ Error WasmObjectFile::parseRelocSection(StringRef Name, const uint8_t *Ptr, case wasm::R_WEBASSEMBLY_FUNCTION_INDEX_LEB: case wasm::R_WEBASSEMBLY_TABLE_INDEX_SLEB: case wasm::R_WEBASSEMBLY_TABLE_INDEX_I32: + case wasm::R_WEBASSEMBLY_TYPE_INDEX_LEB: break; case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB: case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB: case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32: - Reloc.Addend = readVaruint32(Ptr); + Reloc.Addend = readVarint32(Ptr); break; default: - return make_error<GenericBinaryError>("Bad relocation type", + return make_error<GenericBinaryError>("Bad relocation type: " + Twine(Reloc.Type), object_error::parse_failed); } Section->Relocations.push_back(Reloc); diff --git a/llvm/lib/ObjectYAML/WasmYAML.cpp b/llvm/lib/ObjectYAML/WasmYAML.cpp index 1c7c07ae29e..9b1ff7e5dc1 100644 --- a/llvm/lib/ObjectYAML/WasmYAML.cpp +++ b/llvm/lib/ObjectYAML/WasmYAML.cpp @@ -223,7 +223,7 @@ void MappingTraits<WasmYAML::Relocation>::mapping( IO.mapRequired("Type", Relocation.Type); IO.mapRequired("Index", Relocation.Index); IO.mapRequired("Offset", Relocation.Offset); - IO.mapRequired("Addend", Relocation.Addend); + IO.mapOptional("Addend", Relocation.Addend, 0); } void MappingTraits<WasmYAML::LocalDecl>::mapping( diff --git a/llvm/test/ObjectYAML/wasm/code_section.yaml b/llvm/test/ObjectYAML/wasm/code_section.yaml index b75bf7e1cfd..5359d2a100c 100644 --- a/llvm/test/ObjectYAML/wasm/code_section.yaml +++ b/llvm/test/ObjectYAML/wasm/code_section.yaml @@ -21,11 +21,9 @@ Sections: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB Index: 0 Offset: 0x00000006 - Addend: 0x00000000 - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB Index: 1 Offset: 0x00000025 - Addend: 0x00000000 Functions: - Locals: - Type: I32 @@ -56,11 +54,9 @@ Sections: # CHECK: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB # CHECK: Index: 0 # CHECK: Offset: 0x00000006 -# CHECK: Addend: 0x00000000 # CHECK: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB # CHECK: Index: 1 # CHECK: Offset: 0x00000025 -# CHECK: Addend: 0x00000000 # CHECK: Functions: # CHECK: - Locals: # CHECK: - Type: I32 diff --git a/llvm/test/ObjectYAML/wasm/data_section.yaml b/llvm/test/ObjectYAML/wasm/data_section.yaml index 542d0efe42f..b8c65abbff9 100644 --- a/llvm/test/ObjectYAML/wasm/data_section.yaml +++ b/llvm/test/ObjectYAML/wasm/data_section.yaml @@ -13,16 +13,34 @@ Sections: Opcode: I32_CONST Value: 4 Content: '10001000' + Relocations: + - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32 + Index: 0 + Offset: 0x00000006 + Addend: 8 + - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32 + Index: 0 + Offset: 0x00000006 + Addend: -6 ... # CHECK: --- !WASM # CHECK: FileHeader: # CHECK: Version: 0x00000001 # CHECK: Sections: # CHECK: - Type: DATA -# CHECK: Segments: -# CHECK: - Index: 0 -# CHECK: Offset: -# CHECK: Opcode: I32_CONST -# CHECK: Value: 4 -# CHECK: Content: '10001000' -# CHECK: ... +# CHECK-NEXT: Relocations: +# CHECK-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32 +# CHECK-NEXT: Index: 0 +# CHECK-NEXT: Offset: 0x00000006 +# CHECK-NEXT: Addend: 8 +# CHECK-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32 +# CHECK-NEXT: Index: 0 +# CHECK-NEXT: Offset: 0x00000006 +# CHECK-NEXT: Addend: -6 +# CHECK-NEXT: Segments: +# CHECK-NEXT: - Index: 0 +# CHECK-NEXT: Offset: +# CHECK-NEXT: Opcode: I32_CONST +# CHECK-NEXT: Value: 4 +# CHECK-NEXT: Content: '10001000' +# CHECK-NEXT: ... |