forked from OSchip/llvm-project
[WebAssembly] Export the stack pointer when using --emit-relocs
This solves the problem that --emit-relocs needs the stack-pointer to be exported, in order to write out any relocations that reference the __stack_pointer symbol by its symbol index. Patch by Nicholas Wilson! Differential Revision: https://reviews.llvm.org/D42237 llvm-svn: 322911
This commit is contained in:
parent
84b26b90d1
commit
14ae6e7c5c
|
@ -58,6 +58,9 @@ entry:
|
|||
; CHECK-NEXT: - Name: __wasm_call_ctors
|
||||
; CHECK-NEXT: Kind: FUNCTION
|
||||
; CHECK-NEXT: Index: 1
|
||||
; CHECK-NEXT: - Name: __stack_pointer
|
||||
; CHECK-NEXT: Kind: GLOBAL
|
||||
; CHECK-NEXT: Index: 0
|
||||
; CHECK-NEXT: - Name: __heap_base
|
||||
; CHECK-NEXT: Kind: GLOBAL
|
||||
; CHECK-NEXT: Index: 1
|
||||
|
|
|
@ -659,9 +659,12 @@ void Writer::calculateExports() {
|
|||
}
|
||||
|
||||
for (const Symbol *Sym : DefinedGlobals) {
|
||||
// Can't export the SP right now because it's mutable and mutable globals
|
||||
// cannot be exported.
|
||||
if (Sym == Config->StackPointerSymbol)
|
||||
// Can't export the SP right now because its mutable, and mutuable globals
|
||||
// are yet supported in the official binary format. However, for
|
||||
// intermediate output we need to export it in case it is the target of any
|
||||
// relocations.
|
||||
// TODO(sbc): Remove this if/when the "mutable global" proposal is accepted.
|
||||
if (Sym == Config->StackPointerSymbol && !Config->EmitRelocs)
|
||||
continue;
|
||||
ExportedSymbols.emplace_back(WasmExportEntry{Sym, BudgeLocalName(Sym)});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue