summaryrefslogtreecommitdiffstats
path: root/lldb/source/API
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2013-03-02 00:26:47 +0000
committerJim Ingham <jingham@apple.com>2013-03-02 00:26:47 +0000
commit0f063ba6b41276a18f3f60380ce16fcd58b20484 (patch)
tree19e25c2ecef13047a0fe0ec382961b0d4d98d027 /lldb/source/API
parentb1caf3c30e6a72b37379600872e253da4d18178e (diff)
downloadbcm5719-llvm-0f063ba6b41276a18f3f60380ce16fcd58b20484.tar.gz
bcm5719-llvm-0f063ba6b41276a18f3f60380ce16fcd58b20484.zip
Convert from the C-based LLVM Disassembler shim to the full MC Disassembler API's.
Calculate "can branch" using the MC API's rather than our hand-rolled regex'es. As extra credit, allow setting the disassembly flavor for x86 based architectures to intel or att. <rdar://problem/11319574> <rdar://problem/9329275> llvm-svn: 176392
Diffstat (limited to 'lldb/source/API')
-rw-r--r--lldb/source/API/SBFunction.cpp7
-rw-r--r--lldb/source/API/SBSymbol.cpp9
-rw-r--r--lldb/source/API/SBTarget.cpp22
3 files changed, 35 insertions, 3 deletions
diff --git a/lldb/source/API/SBFunction.cpp b/lldb/source/API/SBFunction.cpp
index 028725cbae2..3617c0e5a4c 100644
--- a/lldb/source/API/SBFunction.cpp
+++ b/lldb/source/API/SBFunction.cpp
@@ -122,6 +122,12 @@ SBFunction::GetDescription (SBStream &s)
SBInstructionList
SBFunction::GetInstructions (SBTarget target)
{
+ return GetInstructions (target, NULL);
+}
+
+SBInstructionList
+SBFunction::GetInstructions (SBTarget target, const char *flavor)
+{
SBInstructionList sb_instructions;
if (m_opaque_ptr)
{
@@ -139,6 +145,7 @@ SBFunction::GetInstructions (SBTarget target)
{
sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module_sp->GetArchitecture(),
NULL,
+ flavor,
exe_ctx,
m_opaque_ptr->GetAddressRange()));
}
diff --git a/lldb/source/API/SBSymbol.cpp b/lldb/source/API/SBSymbol.cpp
index 3fd06f84eb1..580ef93c4be 100644
--- a/lldb/source/API/SBSymbol.cpp
+++ b/lldb/source/API/SBSymbol.cpp
@@ -113,11 +113,15 @@ SBSymbol::GetDescription (SBStream &description)
return true;
}
-
-
SBInstructionList
SBSymbol::GetInstructions (SBTarget target)
{
+ return GetInstructions (target, NULL);
+}
+
+SBInstructionList
+SBSymbol::GetInstructions (SBTarget target, const char *flavor_string)
+{
SBInstructionList sb_instructions;
if (m_opaque_ptr)
{
@@ -137,6 +141,7 @@ SBSymbol::GetInstructions (SBTarget target)
AddressRange symbol_range (m_opaque_ptr->GetAddress(), m_opaque_ptr->GetByteSize());
sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module_sp->GetArchitecture (),
NULL,
+ flavor_string,
exe_ctx,
symbol_range));
}
diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp
index c41051ff327..739cb4c82ae 100644
--- a/lldb/source/API/SBTarget.cpp
+++ b/lldb/source/API/SBTarget.cpp
@@ -2250,6 +2250,12 @@ SBTarget::GetSourceManager()
lldb::SBInstructionList
SBTarget::ReadInstructions (lldb::SBAddress base_addr, uint32_t count)
{
+ return ReadInstructions (base_addr, count, NULL);
+}
+
+lldb::SBInstructionList
+SBTarget::ReadInstructions (lldb::SBAddress base_addr, uint32_t count, const char *flavor_string)
+{
SBInstructionList sb_instructions;
TargetSP target_sp(GetSP());
@@ -2265,6 +2271,7 @@ SBTarget::ReadInstructions (lldb::SBAddress base_addr, uint32_t count)
const size_t bytes_read = target_sp->ReadMemory(*addr_ptr, prefer_file_cache, data.GetBytes(), data.GetByteSize(), error);
sb_instructions.SetDisassembler (Disassembler::DisassembleBytes (target_sp->GetArchitecture(),
NULL,
+ flavor_string,
*addr_ptr,
data.GetBytes(),
bytes_read,
@@ -2279,6 +2286,12 @@ SBTarget::ReadInstructions (lldb::SBAddress base_addr, uint32_t count)
lldb::SBInstructionList
SBTarget::GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size)
{
+ return GetInstructionsWithFlavor (base_addr, NULL, buf, size);
+}
+
+lldb::SBInstructionList
+SBTarget::GetInstructionsWithFlavor (lldb::SBAddress base_addr, const char *flavor_string, const void *buf, size_t size)
+{
SBInstructionList sb_instructions;
TargetSP target_sp(GetSP());
@@ -2291,6 +2304,7 @@ SBTarget::GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t si
sb_instructions.SetDisassembler (Disassembler::DisassembleBytes (target_sp->GetArchitecture(),
NULL,
+ flavor_string,
addr,
buf,
size));
@@ -2302,7 +2316,13 @@ SBTarget::GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t si
lldb::SBInstructionList
SBTarget::GetInstructions (lldb::addr_t base_addr, const void *buf, size_t size)
{
- return GetInstructions (ResolveLoadAddress(base_addr), buf, size);
+ return GetInstructionsWithFlavor (ResolveLoadAddress(base_addr), NULL, buf, size);
+}
+
+lldb::SBInstructionList
+SBTarget::GetInstructionsWithFlavor (lldb::addr_t base_addr, const char *flavor_string, const void *buf, size_t size)
+{
+ return GetInstructionsWithFlavor (ResolveLoadAddress(base_addr), flavor_string, buf, size);
}
SBError
OpenPOWER on IntegriCloud