[WebAssembly] Update relocation names to match spec
Summary: See https://github.com/WebAssembly/tool-conventions/blob/master/Linking.md Differential Revision: https://reviews.llvm.org/D37385 llvm-svn: 312342
This commit is contained in:
parent
f483817fc1
commit
13a2e89926
|
@ -6,8 +6,8 @@
|
||||||
WASM_RELOC(R_WEBASSEMBLY_FUNCTION_INDEX_LEB, 0)
|
WASM_RELOC(R_WEBASSEMBLY_FUNCTION_INDEX_LEB, 0)
|
||||||
WASM_RELOC(R_WEBASSEMBLY_TABLE_INDEX_SLEB, 1)
|
WASM_RELOC(R_WEBASSEMBLY_TABLE_INDEX_SLEB, 1)
|
||||||
WASM_RELOC(R_WEBASSEMBLY_TABLE_INDEX_I32, 2)
|
WASM_RELOC(R_WEBASSEMBLY_TABLE_INDEX_I32, 2)
|
||||||
WASM_RELOC(R_WEBASSEMBLY_GLOBAL_ADDR_LEB, 3)
|
WASM_RELOC(R_WEBASSEMBLY_MEMORY_ADDR_LEB, 3)
|
||||||
WASM_RELOC(R_WEBASSEMBLY_GLOBAL_ADDR_SLEB, 4)
|
WASM_RELOC(R_WEBASSEMBLY_MEMORY_ADDR_SLEB, 4)
|
||||||
WASM_RELOC(R_WEBASSEMBLY_GLOBAL_ADDR_I32, 5)
|
WASM_RELOC(R_WEBASSEMBLY_MEMORY_ADDR_I32, 5)
|
||||||
WASM_RELOC(R_WEBASSEMBLY_TYPE_INDEX_LEB, 6)
|
WASM_RELOC(R_WEBASSEMBLY_TYPE_INDEX_LEB, 6)
|
||||||
WASM_RELOC(R_WEBASSEMBLY_GLOBAL_INDEX_LEB, 7)
|
WASM_RELOC(R_WEBASSEMBLY_GLOBAL_INDEX_LEB, 7)
|
||||||
|
|
|
@ -142,9 +142,9 @@ struct WasmRelocationEntry {
|
||||||
|
|
||||||
bool hasAddend() const {
|
bool hasAddend() const {
|
||||||
switch (Type) {
|
switch (Type) {
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
@ -495,9 +495,9 @@ uint32_t WasmObjectWriter::getRelocationIndexValue(
|
||||||
return IndirectSymbolIndices[RelEntry.Symbol];
|
return IndirectSymbolIndices[RelEntry.Symbol];
|
||||||
case wasm::R_WEBASSEMBLY_FUNCTION_INDEX_LEB:
|
case wasm::R_WEBASSEMBLY_FUNCTION_INDEX_LEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_INDEX_LEB:
|
case wasm::R_WEBASSEMBLY_GLOBAL_INDEX_LEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32:
|
||||||
if (!SymbolIndices.count(RelEntry.Symbol))
|
if (!SymbolIndices.count(RelEntry.Symbol))
|
||||||
report_fatal_error("symbol not found function/global index space: " +
|
report_fatal_error("symbol not found function/global index space: " +
|
||||||
RelEntry.Symbol->getName());
|
RelEntry.Symbol->getName());
|
||||||
|
@ -537,17 +537,17 @@ void WasmObjectWriter::applyRelocations(
|
||||||
WriteI32(Stream, Index, Offset);
|
WriteI32(Stream, Index, Offset);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB: {
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB: {
|
||||||
uint32_t Value = ProvisionalValue(RelEntry);
|
uint32_t Value = ProvisionalValue(RelEntry);
|
||||||
WritePatchableSLEB(Stream, Value, Offset);
|
WritePatchableSLEB(Stream, Value, Offset);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB: {
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB: {
|
||||||
uint32_t Value = ProvisionalValue(RelEntry);
|
uint32_t Value = ProvisionalValue(RelEntry);
|
||||||
WritePatchableLEB(Stream, Value, Offset);
|
WritePatchableLEB(Stream, Value, Offset);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32: {
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32: {
|
||||||
uint32_t Value = ProvisionalValue(RelEntry);
|
uint32_t Value = ProvisionalValue(RelEntry);
|
||||||
WriteI32(Stream, Value, Offset);
|
WriteI32(Stream, Value, Offset);
|
||||||
break;
|
break;
|
||||||
|
@ -967,7 +967,7 @@ void WasmObjectWriter::writeObject(MCAssembler &Asm,
|
||||||
for (const WasmRelocationEntry &RelEntry : CodeRelocations) {
|
for (const WasmRelocationEntry &RelEntry : CodeRelocations) {
|
||||||
switch (RelEntry.Type) {
|
switch (RelEntry.Type) {
|
||||||
case wasm::R_WEBASSEMBLY_TABLE_INDEX_SLEB:
|
case wasm::R_WEBASSEMBLY_TABLE_INDEX_SLEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB:
|
||||||
IsAddressTaken.insert(RelEntry.Symbol);
|
IsAddressTaken.insert(RelEntry.Symbol);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -977,7 +977,7 @@ void WasmObjectWriter::writeObject(MCAssembler &Asm,
|
||||||
for (const WasmRelocationEntry &RelEntry : DataRelocations) {
|
for (const WasmRelocationEntry &RelEntry : DataRelocations) {
|
||||||
switch (RelEntry.Type) {
|
switch (RelEntry.Type) {
|
||||||
case wasm::R_WEBASSEMBLY_TABLE_INDEX_I32:
|
case wasm::R_WEBASSEMBLY_TABLE_INDEX_I32:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32:
|
||||||
IsAddressTaken.insert(RelEntry.Symbol);
|
IsAddressTaken.insert(RelEntry.Symbol);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -395,9 +395,9 @@ Error WasmObjectFile::parseRelocSection(StringRef Name, const uint8_t *Ptr,
|
||||||
case wasm::R_WEBASSEMBLY_TYPE_INDEX_LEB:
|
case wasm::R_WEBASSEMBLY_TYPE_INDEX_LEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_INDEX_LEB:
|
case wasm::R_WEBASSEMBLY_GLOBAL_INDEX_LEB:
|
||||||
break;
|
break;
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32:
|
||||||
Reloc.Addend = readVarint32(Ptr);
|
Reloc.Addend = readVarint32(Ptr);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -73,7 +73,7 @@ WebAssemblyWasmObjectWriter::getRelocType(const MCValue &Target,
|
||||||
case WebAssembly::fixup_code_sleb128_i32:
|
case WebAssembly::fixup_code_sleb128_i32:
|
||||||
if (IsFunction)
|
if (IsFunction)
|
||||||
return wasm::R_WEBASSEMBLY_TABLE_INDEX_SLEB;
|
return wasm::R_WEBASSEMBLY_TABLE_INDEX_SLEB;
|
||||||
return wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB;
|
return wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB;
|
||||||
case WebAssembly::fixup_code_sleb128_i64:
|
case WebAssembly::fixup_code_sleb128_i64:
|
||||||
llvm_unreachable("fixup_sleb128_i64 not implemented yet");
|
llvm_unreachable("fixup_sleb128_i64 not implemented yet");
|
||||||
case WebAssembly::fixup_code_uleb128_i32:
|
case WebAssembly::fixup_code_uleb128_i32:
|
||||||
|
@ -81,11 +81,11 @@ WebAssemblyWasmObjectWriter::getRelocType(const MCValue &Target,
|
||||||
return wasm::R_WEBASSEMBLY_TYPE_INDEX_LEB;
|
return wasm::R_WEBASSEMBLY_TYPE_INDEX_LEB;
|
||||||
if (IsFunction)
|
if (IsFunction)
|
||||||
return wasm::R_WEBASSEMBLY_FUNCTION_INDEX_LEB;
|
return wasm::R_WEBASSEMBLY_FUNCTION_INDEX_LEB;
|
||||||
return wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB;
|
return wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB;
|
||||||
case FK_Data_4:
|
case FK_Data_4:
|
||||||
if (IsFunction)
|
if (IsFunction)
|
||||||
return wasm::R_WEBASSEMBLY_TABLE_INDEX_I32;
|
return wasm::R_WEBASSEMBLY_TABLE_INDEX_I32;
|
||||||
return wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32;
|
return wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32;
|
||||||
case FK_Data_8:
|
case FK_Data_8:
|
||||||
llvm_unreachable("FK_Data_8 not implemented yet");
|
llvm_unreachable("FK_Data_8 not implemented yet");
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
; CHECK: - Type: DATA
|
; CHECK: - Type: DATA
|
||||||
; CHECK: Relocations:
|
; CHECK: Relocations:
|
||||||
; CHECK: - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32
|
; CHECK: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
|
||||||
; CHECK: Index: 0
|
; CHECK: Index: 0
|
||||||
; CHECK: Offset: 0x0000000E
|
; CHECK: Offset: 0x0000000E
|
||||||
; CHECK: Segments:
|
; CHECK: Segments:
|
||||||
|
|
|
@ -24,13 +24,13 @@ entry:
|
||||||
; CHECK: Relocations [
|
; CHECK: Relocations [
|
||||||
; CHECK-NEXT: Section (8) CODE {
|
; CHECK-NEXT: Section (8) CODE {
|
||||||
; CHECK-NEXT: Relocation {
|
; CHECK-NEXT: Relocation {
|
||||||
; CHECK-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_LEB (3)
|
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB (3)
|
||||||
; CHECK-NEXT: Offset: 0x9
|
; CHECK-NEXT: Offset: 0x9
|
||||||
; CHECK-NEXT: Index: 0x0
|
; CHECK-NEXT: Index: 0x0
|
||||||
; CHECK-NEXT: Addend: 0
|
; CHECK-NEXT: Addend: 0
|
||||||
; CHECK-NEXT: }
|
; CHECK-NEXT: }
|
||||||
; CHECK-NEXT: Relocation {
|
; CHECK-NEXT: Relocation {
|
||||||
; CHECK-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_LEB (3)
|
; CHECK-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB (3)
|
||||||
; CHECK-NEXT: Offset: 0x14
|
; CHECK-NEXT: Offset: 0x14
|
||||||
; CHECK-NEXT: Index: 0x1
|
; CHECK-NEXT: Index: 0x1
|
||||||
; CHECK-NEXT: Addend: 0
|
; CHECK-NEXT: Addend: 0
|
||||||
|
|
|
@ -11,13 +11,13 @@
|
||||||
; CHECK: Relocations [
|
; CHECK: Relocations [
|
||||||
; CHECK: Section (6) DATA {
|
; CHECK: Section (6) DATA {
|
||||||
; CHECK: Relocation {
|
; CHECK: Relocation {
|
||||||
; CHECK: Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32 (5)
|
; CHECK: Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 (5)
|
||||||
; CHECK: Offset: 0xE
|
; CHECK: Offset: 0xE
|
||||||
; CHECK: Index: 0x0
|
; CHECK: Index: 0x0
|
||||||
; CHECK: Addend: 8
|
; CHECK: Addend: 8
|
||||||
; CHECK: }
|
; CHECK: }
|
||||||
; CHECK: Relocation {
|
; CHECK: Relocation {
|
||||||
; CHECK: Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32 (5)
|
; CHECK: Type: R_WEBASSEMBLY_MEMORY_ADDR_I32 (5)
|
||||||
; CHECK: Offset: 0x16
|
; CHECK: Offset: 0x16
|
||||||
; CHECK: Index: 0x1
|
; CHECK: Index: 0x1
|
||||||
; CHECK: Addend: -16
|
; CHECK: Addend: -16
|
||||||
|
|
|
@ -39,10 +39,10 @@
|
||||||
; CHECK-NEXT: Index: 3
|
; CHECK-NEXT: Index: 3
|
||||||
; CHECK-NEXT: - Type: DATA
|
; CHECK-NEXT: - Type: DATA
|
||||||
; CHECK-NEXT: Relocations:
|
; CHECK-NEXT: Relocations:
|
||||||
; CHECK-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32
|
; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
|
||||||
; CHECK-NEXT: Index: 0
|
; CHECK-NEXT: Index: 0
|
||||||
; CHECK-NEXT: Offset: 0x00000016
|
; CHECK-NEXT: Offset: 0x00000016
|
||||||
; CHECK-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32
|
; CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
|
||||||
; CHECK-NEXT: Index: 1
|
; CHECK-NEXT: Index: 1
|
||||||
; CHECK-NEXT: Offset: 0x0000001E
|
; CHECK-NEXT: Offset: 0x0000001E
|
||||||
; CHECK-NEXT: Segments:
|
; CHECK-NEXT: Segments:
|
||||||
|
|
|
@ -60,7 +60,7 @@ ELF-MIPSEL: R_MIPS_CALL16 puts
|
||||||
ELF-MIPSEL: R_MIPS_CALL16 SomeOtherFunction
|
ELF-MIPSEL: R_MIPS_CALL16 SomeOtherFunction
|
||||||
|
|
||||||
WASM: CODE
|
WASM: CODE
|
||||||
WASM-NEXT: R_WEBASSEMBLY_GLOBAL_ADDR_SLEB 0+0
|
WASM-NEXT: R_WEBASSEMBLY_MEMORY_ADDR_SLEB 0+0
|
||||||
WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB 0+0
|
WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB 0+0
|
||||||
WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB 1+0
|
WASM-NEXT: R_WEBASSEMBLY_FUNCTION_INDEX_LEB 1+0
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,11 @@ Sections:
|
||||||
Value: 4
|
Value: 4
|
||||||
Content: '10001000'
|
Content: '10001000'
|
||||||
Relocations:
|
Relocations:
|
||||||
- Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32
|
- Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
|
||||||
Index: 0
|
Index: 0
|
||||||
Offset: 0x00000006
|
Offset: 0x00000006
|
||||||
Addend: 8
|
Addend: 8
|
||||||
- Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32
|
- Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
|
||||||
Index: 0
|
Index: 0
|
||||||
Offset: 0x00000006
|
Offset: 0x00000006
|
||||||
Addend: -6
|
Addend: -6
|
||||||
|
@ -29,11 +29,11 @@ Sections:
|
||||||
# CHECK: Sections:
|
# CHECK: Sections:
|
||||||
# CHECK: - Type: DATA
|
# CHECK: - Type: DATA
|
||||||
# CHECK-NEXT: Relocations:
|
# CHECK-NEXT: Relocations:
|
||||||
# CHECK-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32
|
# CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
|
||||||
# CHECK-NEXT: Index: 0
|
# CHECK-NEXT: Index: 0
|
||||||
# CHECK-NEXT: Offset: 0x00000006
|
# CHECK-NEXT: Offset: 0x00000006
|
||||||
# CHECK-NEXT: Addend: 8
|
# CHECK-NEXT: Addend: 8
|
||||||
# CHECK-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_ADDR_I32
|
# CHECK-NEXT: - Type: R_WEBASSEMBLY_MEMORY_ADDR_I32
|
||||||
# CHECK-NEXT: Index: 0
|
# CHECK-NEXT: Index: 0
|
||||||
# CHECK-NEXT: Offset: 0x00000006
|
# CHECK-NEXT: Offset: 0x00000006
|
||||||
# CHECK-NEXT: Addend: -6
|
# CHECK-NEXT: Addend: -6
|
||||||
|
|
|
@ -5,4 +5,4 @@
|
||||||
@bar = hidden global i32* @foo2, align 4
|
@bar = hidden global i32* @foo2, align 4
|
||||||
|
|
||||||
; CHECK: RELOCATION RECORDS FOR [DATA]:
|
; CHECK: RELOCATION RECORDS FOR [DATA]:
|
||||||
; CHECK-NEXT: 0000000e R_WEBASSEMBLY_GLOBAL_ADDR_I32 1+0
|
; CHECK-NEXT: 0000000e R_WEBASSEMBLY_MEMORY_ADDR_I32 1+0
|
||||||
|
|
|
@ -289,7 +289,7 @@ MACHO-ARM-NEXT: ]
|
||||||
WASM: Relocations [
|
WASM: Relocations [
|
||||||
WASM-NEXT: Section (8) CODE {
|
WASM-NEXT: Section (8) CODE {
|
||||||
WASM-NEXT: Relocation {
|
WASM-NEXT: Relocation {
|
||||||
WASM-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_SLEB (4)
|
WASM-NEXT: Type: R_WEBASSEMBLY_MEMORY_ADDR_SLEB (4)
|
||||||
WASM-NEXT: Offset: 0x4
|
WASM-NEXT: Offset: 0x4
|
||||||
WASM-NEXT: Index: 0x0
|
WASM-NEXT: Index: 0x0
|
||||||
WASM-NEXT: Addend: 0
|
WASM-NEXT: Addend: 0
|
||||||
|
|
|
@ -83,9 +83,9 @@ void WasmDumper::printRelocation(const SectionRef &Section,
|
||||||
|
|
||||||
bool HasAddend = false;
|
bool HasAddend = false;
|
||||||
switch (RelocType) {
|
switch (RelocType) {
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32:
|
||||||
HasAddend = true;
|
HasAddend = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -370,9 +370,9 @@ int WasmWriter::writeRelocSection(raw_ostream &OS,
|
||||||
encodeULEB128(Reloc.Offset, OS);
|
encodeULEB128(Reloc.Offset, OS);
|
||||||
encodeULEB128(Reloc.Index, OS);
|
encodeULEB128(Reloc.Index, OS);
|
||||||
switch (Reloc.Type) {
|
switch (Reloc.Type) {
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_LEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_SLEB:
|
||||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_I32:
|
case wasm::R_WEBASSEMBLY_MEMORY_ADDR_I32:
|
||||||
encodeULEB128(Reloc.Addend, OS);
|
encodeULEB128(Reloc.Addend, OS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue