[WebAssembly] Use __stack_pointer global when writing wasm binary
This ensures that symbolic relocations are generated for stack pointer manipulations. These relocations are of type R_WEBASSEMBLY_GLOBAL_INDEX_LEB. This change also adds support for reading relocations of this type in WasmObjectFile.cpp. Since its a globally imported symbol this does mean that the get_global/set_global instruction won't be valid until the objects are linked that global used in no longer an imported global. Differential Revision: https://reviews.llvm.org/D34172 llvm-svn: 305616
This commit is contained in:
@@ -325,6 +325,7 @@ Error WasmObjectFile::parseRelocSection(StringRef Name, const uint8_t *Ptr,
|
||||
case wasm::R_WEBASSEMBLY_TABLE_INDEX_SLEB:
|
||||
case wasm::R_WEBASSEMBLY_TABLE_INDEX_I32:
|
||||
case wasm::R_WEBASSEMBLY_TYPE_INDEX_LEB:
|
||||
case wasm::R_WEBASSEMBLY_GLOBAL_INDEX_LEB:
|
||||
break;
|
||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_LEB:
|
||||
case wasm::R_WEBASSEMBLY_GLOBAL_ADDR_SLEB:
|
||||
@@ -332,7 +333,8 @@ Error WasmObjectFile::parseRelocSection(StringRef Name, const uint8_t *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);
|
||||
|
||||
Reference in New Issue
Block a user