diff options
author | Jim Ingham <jingham@apple.com> | 2013-03-02 00:26:47 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2013-03-02 00:26:47 +0000 |
commit | 0f063ba6b41276a18f3f60380ce16fcd58b20484 (patch) | |
tree | 19e25c2ecef13047a0fe0ec382961b0d4d98d027 /lldb/source/API | |
parent | b1caf3c30e6a72b37379600872e253da4d18178e (diff) | |
download | bcm5719-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.cpp | 7 | ||||
-rw-r--r-- | lldb/source/API/SBSymbol.cpp | 9 | ||||
-rw-r--r-- | lldb/source/API/SBTarget.cpp | 22 |
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 |