diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-01-04 10:46:51 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-01-04 10:46:51 +0000 |
commit | 49ff8ecd0347364505a86e4f04d10de841b71d48 (patch) | |
tree | 0facf85f499ec70ed1f7e2d2833be5911d558e9d /llvm/lib/Target/X86/X86JITInfo.cpp | |
parent | 118ae4cd61b35e44ce29da62155780cb0da5b7a5 (diff) | |
download | bcm5719-llvm-49ff8ecd0347364505a86e4f04d10de841b71d48.tar.gz bcm5719-llvm-49ff8ecd0347364505a86e4f04d10de841b71d48.zip |
X86 PIC JIT support fixes: encoding bugs, add lazy pointer stubs support.
llvm-svn: 45575
Diffstat (limited to 'llvm/lib/Target/X86/X86JITInfo.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86JITInfo.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86JITInfo.cpp b/llvm/lib/Target/X86/X86JITInfo.cpp index af1a8b89474..d5d3cda2dc6 100644 --- a/llvm/lib/Target/X86/X86JITInfo.cpp +++ b/llvm/lib/Target/X86/X86JITInfo.cpp @@ -380,6 +380,18 @@ X86JITInfo::getLazyResolverFunction(JITCompilerFn F) { return X86CompilationCallback; } +void *X86JITInfo::emitGlobalValueLazyPtr(void *GV, MachineCodeEmitter &MCE) { +#ifdef __x86_64__ + MCE.startFunctionStub(8, 8); + MCE.emitWordLE(((unsigned *)&GV)[0]); + MCE.emitWordLE(((unsigned *)&GV)[1]); +#else + MCE.startFunctionStub(4, 4); + MCE.emitWordLE((unsigned)GV); +#endif + return MCE.finishFunctionStub(0); +} + void *X86JITInfo::emitFunctionStub(void *Fn, MachineCodeEmitter &MCE) { // Note, we cast to intptr_t here to silence a -pedantic warning that // complains about casting a function pointer to a normal pointer. |