diff options
Diffstat (limited to 'lib/Debugger/Debugger.cpp')
-rw-r--r-- | lib/Debugger/Debugger.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/Debugger/Debugger.cpp b/lib/Debugger/Debugger.cpp index 613a19d2f3..90741afc8e 100644 --- a/lib/Debugger/Debugger.cpp +++ b/lib/Debugger/Debugger.cpp @@ -15,11 +15,15 @@ #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/Bytecode/Reader.h" +#include "llvm/Bitcode/ReaderWriter.h" #include "llvm/Debugger/InferiorProcess.h" +#include "llvm/Support/MemoryBuffer.h" #include "llvm/ADT/StringExtras.h" #include <memory> using namespace llvm; +static bool Bitcode = false; + /// Debugger constructor - Initialize the debugger to its initial, empty, state. /// Debugger::Debugger() : Environment(0), Program(0), Process(0) { @@ -45,7 +49,15 @@ std::string Debugger::getProgramPath() const { static Module * getMaterializedModuleProvider(const std::string &Filename) { - return ParseBytecodeFile(Filename); + if (Bitcode) { + return ParseBytecodeFile(Filename); + } else { + std::auto_ptr<MemoryBuffer> Buffer; + Buffer.reset(MemoryBuffer::getFileOrSTDIN(&Filename[0], Filename.size())); + if (Buffer.get()) + return ParseBitcodeFile(Buffer.get()); + return 0; + } } /// loadProgram - If a program is currently loaded, unload it. Then search |