summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2011-04-07 22:46:35 +0000
committerGreg Clayton <gclayton@apple.com>2011-04-07 22:46:35 +0000
commiteb0103f2d08a13812614da6f4dc3f6bb80c7aa21 (patch)
treedbf5eb8c26e985bc82f53cb4030cee1f0bbfba11 /lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
parent165a07adf94e4b81e7ed110158688b1426fe9f76 (diff)
downloadbcm5719-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.cpp27
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);
}
}
OpenPOWER on IntegriCloud