[WebAssembly] Fix stack pointer relocations
This line was mistakenly deleted in rL319813 Add a test for stackpointer relocations. Differential Revision: https://reviews.llvm.org/D40847 llvm-svn: 319828
This commit is contained in:
parent
795ab0d94d
commit
b3974ffda0
|
@ -0,0 +1,67 @@
|
||||||
|
; RUN: llc -filetype=obj %s -o %t.o
|
||||||
|
; RUN: lld -flavor wasm --emit-relocs -o %t.wasm %t.o
|
||||||
|
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||||
|
|
||||||
|
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
||||||
|
target triple = "wasm32-unknown-unknown-wasm"
|
||||||
|
|
||||||
|
; Function Attrs: nounwind
|
||||||
|
define hidden i32 @_start() local_unnamed_addr {
|
||||||
|
entry:
|
||||||
|
%retval = alloca i32, align 4
|
||||||
|
ret i32 0
|
||||||
|
}
|
||||||
|
|
||||||
|
; CHECK: --- !WASM
|
||||||
|
; CHECK-NEXT: FileHeader:
|
||||||
|
; CHECK-NEXT: Version: 0x00000001
|
||||||
|
; CHECK-NEXT: Sections:
|
||||||
|
; CHECK-NEXT: - Type: TYPE
|
||||||
|
; CHECK-NEXT: Signatures:
|
||||||
|
; CHECK-NEXT: - Index: 0
|
||||||
|
; CHECK-NEXT: ReturnType: I32
|
||||||
|
; CHECK-NEXT: ParamTypes:
|
||||||
|
; CHECK-NEXT: - Type: FUNCTION
|
||||||
|
; CHECK-NEXT: FunctionTypes: [ 0 ]
|
||||||
|
; CHECK-NEXT: - Type: TABLE
|
||||||
|
; CHECK-NEXT: Tables:
|
||||||
|
; CHECK-NEXT: - ElemType: ANYFUNC
|
||||||
|
; CHECK-NEXT: Limits:
|
||||||
|
; CHECK-NEXT: Flags: 0x00000001
|
||||||
|
; CHECK-NEXT: Initial: 0x00000001
|
||||||
|
; CHECK-NEXT: Maximum: 0x00000001
|
||||||
|
; CHECK-NEXT: - Type: MEMORY
|
||||||
|
; CHECK-NEXT: Memories:
|
||||||
|
; CHECK-NEXT: - Initial: 0x00000002
|
||||||
|
; CHECK-NEXT: - Type: GLOBAL
|
||||||
|
; CHECK-NEXT: Globals:
|
||||||
|
; CHECK-NEXT: - Type: I32
|
||||||
|
; CHECK-NEXT: Mutable: true
|
||||||
|
; CHECK-NEXT: InitExpr:
|
||||||
|
; CHECK-NEXT: Opcode: I32_CONST
|
||||||
|
; CHECK-NEXT: Value: 66560
|
||||||
|
; CHECK-NEXT: - Type: EXPORT
|
||||||
|
; CHECK-NEXT: Exports:
|
||||||
|
; CHECK-NEXT: - Name: memory
|
||||||
|
; CHECK-NEXT: Kind: MEMORY
|
||||||
|
; CHECK-NEXT: Index: 0
|
||||||
|
; CHECK-NEXT: - Name: _start
|
||||||
|
; CHECK-NEXT: Kind: FUNCTION
|
||||||
|
; CHECK-NEXT: Index: 0
|
||||||
|
; CHECK-NEXT: - Type: CODE
|
||||||
|
; CHECK-NEXT: Relocations:
|
||||||
|
; CHECK-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB
|
||||||
|
; CHECK-NEXT: Index: 0
|
||||||
|
; CHECK-NEXT: Offset: 0x00000004
|
||||||
|
; CHECK-NEXT: Functions:
|
||||||
|
; CHECK-NEXT: - Locals:
|
||||||
|
; CHECK-NEXT: Body: 23808080800041106B1A41000B
|
||||||
|
; CHECK-NEXT: - Type: CUSTOM
|
||||||
|
; CHECK-NEXT: Name: linking
|
||||||
|
; CHECK-NEXT: DataSize: 0
|
||||||
|
; CHECK-NEXT: - Type: CUSTOM
|
||||||
|
; CHECK-NEXT: Name: name
|
||||||
|
; CHECK-NEXT: FunctionNames:
|
||||||
|
; CHECK-NEXT: - Index: 0
|
||||||
|
; CHECK-NEXT: Name: _start
|
||||||
|
; CHECK-NEXT: ...
|
|
@ -142,6 +142,7 @@ static Symbol* addSyntheticGlobal(StringRef Name, int32_t Value) {
|
||||||
log("injecting global: " + Name);
|
log("injecting global: " + Name);
|
||||||
Symbol *S = Symtab->addDefinedGlobal(Name);
|
Symbol *S = Symtab->addDefinedGlobal(Name);
|
||||||
S->setVirtualAddress(Value);
|
S->setVirtualAddress(Value);
|
||||||
|
S->setOutputIndex(Config->SyntheticGlobals.size());
|
||||||
Config->SyntheticGlobals.emplace_back(S);
|
Config->SyntheticGlobals.emplace_back(S);
|
||||||
return S;
|
return S;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue