1 //===-------- OrcCBindingsStack.cpp - Orc JIT stack for C bindings --------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "OrcCBindingsStack.h" 11 12 #include "llvm/ExecutionEngine/Orc/OrcTargetSupport.h" 13 #include "llvm/Support/Debug.h" 14 #include "llvm/Support/DynamicLibrary.h" 15 #include <cstdio> 16 #include <system_error> 17 18 using namespace llvm; 19 20 std::unique_ptr<OrcCBindingsStack::CompileCallbackMgr> createCompileCallbackMgr(Triple T)21OrcCBindingsStack::createCompileCallbackMgr(Triple T) { 22 switch (T.getArch()) { 23 default: return nullptr; 24 25 case Triple::x86_64: { 26 typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64> CCMgrT; 27 return llvm::make_unique<CCMgrT>(0); 28 } 29 } 30 } 31 32 OrcCBindingsStack::IndirectStubsManagerBuilder createIndirectStubsMgrBuilder(Triple T)33OrcCBindingsStack::createIndirectStubsMgrBuilder(Triple T) { 34 switch (T.getArch()) { 35 default: return nullptr; 36 37 case Triple::x86_64: 38 return [](){ 39 return llvm::make_unique< 40 orc::LocalIndirectStubsManager<orc::OrcX86_64>>(); 41 }; 42 } 43 } 44