diff options
author | Greg Clayton <gclayton@apple.com> | 2011-04-07 22:46:35 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2011-04-07 22:46:35 +0000 |
commit | eb0103f2d08a13812614da6f4dc3f6bb80c7aa21 (patch) | |
tree | dbf5eb8c26e985bc82f53cb4030cee1f0bbfba11 /lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp | |
parent | 165a07adf94e4b81e7ed110158688b1426fe9f76 (diff) | |
download | bcm5719-llvm-eb0103f2d08a13812614da6f4dc3f6bb80c7aa21.tar.gz bcm5719-llvm-eb0103f2d08a13812614da6f4dc3f6bb80c7aa21.zip |
Modified the ArchSpec to take an optional "Platform *" when setting the triple.
This allows you to have a platform selected, then specify a triple using
"i386" and have the remaining triple items (vendor, os, and environment) set
automatically.
Many interpreter commands take the "--arch" option to specify an architecture
triple, so now the command options needed to be able to get to the current
platform, so the Options class now take a reference to the interpreter on
construction.
Modified the build LLVM building in the Xcode project to use the new
Xcode project level user definitions:
LLVM_BUILD_DIR - a path to the llvm build directory
LLVM_SOURCE_DIR - a path to the llvm sources for the llvm that will be used to build lldb
LLVM_CONFIGURATION - the configuration that lldb is built for (Release,
Release+Asserts, Debug, Debug+Asserts).
I also changed the LLVM build to not check if "lldb/llvm" is a symlink and
then assume it is a real llvm build directory versus the unzipped llvm.zip
package, so now you can actually have a "lldb/llvm" directory in your lldb
sources.
llvm-svn: 129112
Diffstat (limited to 'lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp')
-rw-r--r-- | lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp index 285578686e2..4f71a1b339f 100644 --- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp +++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp @@ -150,27 +150,26 @@ InstructionLLVM::Dump } } - int numTokens = EDNumTokens(m_inst); + int numTokens = -1; + + if (!raw) + numTokens = EDNumTokens(m_inst); int currentOpIndex = -1; - std::auto_ptr<RegisterReaderArg> rra; - - if (!raw) + bool printTokenized = false; + + if (numTokens != -1 && !raw) { addr_t base_addr = LLDB_INVALID_ADDRESS; + + RegisterReaderArg rra(base_addr + EDInstByteSize(m_inst), m_disassembler); + if (exe_ctx && exe_ctx->target && !exe_ctx->target->GetSectionLoadList().IsEmpty()) base_addr = GetAddress().GetLoadAddress (exe_ctx->target); if (base_addr == LLDB_INVALID_ADDRESS) base_addr = GetAddress().GetFileAddress (); - - rra.reset(new RegisterReaderArg(base_addr + EDInstByteSize(m_inst), m_disassembler)); - } - - bool printTokenized = false; - - if (numTokens != -1) - { + printTokenized = true; // Handle the opcode column. @@ -246,7 +245,7 @@ InstructionLLVM::Dump { uint64_t operand_value; - if (!EDEvaluateOperand(&operand_value, operand, IPRegisterReader, rra.get())) + if (!EDEvaluateOperand(&operand_value, operand, IPRegisterReader, &rra)) { if (EDInstIsBranch(m_inst)) { @@ -327,7 +326,7 @@ InstructionLLVM::Dump if (EDGetInstString(&str, m_inst)) return; else - s->PutCString(str); + s->Write(str, strlen(str) - 1); } } |