diff options
author | Andrew Kaylor <andrew.kaylor@intel.com> | 2012-10-02 21:18:39 +0000 |
---|---|---|
committer | Andrew Kaylor <andrew.kaylor@intel.com> | 2012-10-02 21:18:39 +0000 |
commit | adc70568f9ddb5323775ca79c9ddd531af3f4d98 (patch) | |
tree | a54dc069e1c40146b736b3d622068715d9a7447c /llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp | |
parent | f01b02b7cf10bcb8c875cd7f610b0e846025f4e4 (diff) | |
download | bcm5719-llvm-adc70568f9ddb5323775ca79c9ddd531af3f4d98.tar.gz bcm5719-llvm-adc70568f9ddb5323775ca79c9ddd531af3f4d98.zip |
Clean-up of memory buffer and object ownership model in MCJIT
llvm-svn: 165053
Diffstat (limited to 'llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp')
-rw-r--r-- | llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp index 95de8d8a4d5..7b5bd0388d8 100644 --- a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp +++ b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp @@ -14,6 +14,8 @@ #include "llvm/ADT/StringMap.h" #include "llvm/ADT/OwningPtr.h" #include "llvm/ExecutionEngine/RuntimeDyld.h" +#include "llvm/ExecutionEngine/ObjectImage.h" +#include "llvm/ExecutionEngine/ObjectBuffer.h" #include "llvm/Object/MachOObject.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/ManagedStatic.h" @@ -120,12 +122,14 @@ static int executeInput() { for(unsigned i = 0, e = InputFileList.size(); i != e; ++i) { // Load the input memory buffer. OwningPtr<MemoryBuffer> InputBuffer; + OwningPtr<ObjectImage> LoadedObject; if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputFileList[i], InputBuffer)) return Error("unable to read input: '" + ec.message() + "'"); - // Load the object file into it. - if (Dyld.loadObject(InputBuffer.take())) { + // Load the object file + LoadedObject.reset(Dyld.loadObject(new ObjectBuffer(InputBuffer.take()))); + if (!LoadedObject) { return Error(Dyld.getErrorString()); } } |