mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-04 02:24:29 +00:00
Fix the MSVC build with the new Orc JIT APIs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226949 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -32,11 +32,17 @@ protected:
|
|||||||
/// had been provided by this instance. Higher level layers are responsible
|
/// had been provided by this instance. Higher level layers are responsible
|
||||||
/// for taking any action required to handle the missing symbols.
|
/// for taking any action required to handle the missing symbols.
|
||||||
class LinkedObjectSet {
|
class LinkedObjectSet {
|
||||||
|
LinkedObjectSet(const LinkedObjectSet&) LLVM_DELETED_FUNCTION;
|
||||||
|
void operator=(const LinkedObjectSet&) LLVM_DELETED_FUNCTION;
|
||||||
public:
|
public:
|
||||||
LinkedObjectSet(std::unique_ptr<RTDyldMemoryManager> MM)
|
LinkedObjectSet(std::unique_ptr<RTDyldMemoryManager> MM)
|
||||||
: MM(std::move(MM)), RTDyld(llvm::make_unique<RuntimeDyld>(&*this->MM)),
|
: MM(std::move(MM)), RTDyld(llvm::make_unique<RuntimeDyld>(&*this->MM)),
|
||||||
State(Raw) {}
|
State(Raw) {}
|
||||||
|
|
||||||
|
// MSVC 2012 cannot infer a move constructor, so write it out longhand.
|
||||||
|
LinkedObjectSet(LinkedObjectSet &&O)
|
||||||
|
: MM(std::move(O.MM)), RTDyld(std::move(O.RTDyld)), State(O.State) {}
|
||||||
|
|
||||||
std::unique_ptr<RuntimeDyld::LoadedObjectInfo>
|
std::unique_ptr<RuntimeDyld::LoadedObjectInfo>
|
||||||
addObject(const object::ObjectFile &Obj) {
|
addObject(const object::ObjectFile &Obj) {
|
||||||
return RTDyld->loadObject(Obj);
|
return RTDyld->loadObject(Obj);
|
||||||
@ -74,7 +80,7 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
/// @brief Handle to a set of loaded objects.
|
/// @brief Handle to a set of loaded objects.
|
||||||
typedef typename LinkedObjectSetListT::iterator ObjSetHandleT;
|
typedef LinkedObjectSetListT::iterator ObjSetHandleT;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// @brief Default (no-op) action to perform when loading objects.
|
/// @brief Default (no-op) action to perform when loading objects.
|
||||||
|
@ -129,7 +129,7 @@ public:
|
|||||||
setDataLayout(this->TM->getSubtargetImpl()->getDataLayout());
|
setDataLayout(this->TM->getSubtargetImpl()->getDataLayout());
|
||||||
}
|
}
|
||||||
|
|
||||||
void addModule(std::unique_ptr<Module> M) {
|
void addModule(std::unique_ptr<Module> M) override {
|
||||||
|
|
||||||
// If this module doesn't have a DataLayout attached then attach the
|
// If this module doesn't have a DataLayout attached then attach the
|
||||||
// default.
|
// default.
|
||||||
@ -258,7 +258,7 @@ private:
|
|||||||
const ObjListT &Objects,
|
const ObjListT &Objects,
|
||||||
const LoadedObjInfoListT &Infos) const {
|
const LoadedObjInfoListT &Infos) const {
|
||||||
M.UnfinalizedSections[H] = std::move(M.SectionsAllocatedSinceLastLoad);
|
M.UnfinalizedSections[H] = std::move(M.SectionsAllocatedSinceLastLoad);
|
||||||
M.SectionsAllocatedSinceLastLoad = {};
|
M.SectionsAllocatedSinceLastLoad = SectionAddrSet{};
|
||||||
assert(Objects.size() == Infos.size() &&
|
assert(Objects.size() == Infos.size() &&
|
||||||
"Incorrect number of Infos for Objects.");
|
"Incorrect number of Infos for Objects.");
|
||||||
for (unsigned I = 0; I < Objects.size(); ++I)
|
for (unsigned I = 0; I < Objects.size(); ++I)
|
||||||
|
Reference in New Issue
Block a user