diff options
author | emaste <emaste@FreeBSD.org> | 2014-03-19 13:11:35 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2014-03-19 13:11:35 +0000 |
commit | 958843c32b7a29741f2e45996b5b3e89f9e108b0 (patch) | |
tree | 95ae4ffabc848a86b94be3ad3cd42471cdb66b06 /contrib/llvm/tools/lldb/source/Target/ThreadPlanStepRange.cpp | |
parent | 2a9993c246f3a2463ccd6b8786781e5b97a35065 (diff) | |
download | FreeBSD-src-958843c32b7a29741f2e45996b5b3e89f9e108b0.zip FreeBSD-src-958843c32b7a29741f2e45996b5b3e89f9e108b0.tar.gz |
MFC r258054: Update LLDB to upstream r194122 snapshot
Inludes minor changes relative to upstream, for compatibility with
FreeBSD's in-tree LLVM 3.3:
- Reverted LLDB r191806, restoring use of previous API.
- Reverted part of LLDB r189317, restoring previous enum names.
- Work around missing LLVM r192504, using previous registerEHFrames API
(limited functionality).
- Removed PlatformWindows header include and init/terminate calls.
Sponsored by: DARPA, AFRL
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Target/ThreadPlanStepRange.cpp')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Target/ThreadPlanStepRange.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/contrib/llvm/tools/lldb/source/Target/ThreadPlanStepRange.cpp b/contrib/llvm/tools/lldb/source/Target/ThreadPlanStepRange.cpp index 3940d54..309f773 100644 --- a/contrib/llvm/tools/lldb/source/Target/ThreadPlanStepRange.cpp +++ b/contrib/llvm/tools/lldb/source/Target/ThreadPlanStepRange.cpp @@ -173,6 +173,25 @@ ThreadPlanStepRange::InRange () log->Printf ("Step range plan stepped to another range of same line: %s", s.GetData()); } } + else if (new_context.line_entry.line == 0) + { + new_context.line_entry.line = m_addr_context.line_entry.line; + m_addr_context = new_context; + AddRange(m_addr_context.line_entry.range); + ret_value = true; + if (log) + { + StreamString s; + m_addr_context.line_entry.Dump (&s, + m_thread.CalculateTarget().get(), + true, + Address::DumpStyleLoadAddress, + Address::DumpStyleLoadAddress, + true); + + log->Printf ("Step range plan stepped to a range at linenumber 0 stepping through that range: %s", s.GetData()); + } + } else if (new_context.line_entry.range.GetBaseAddress().GetLoadAddress(m_thread.CalculateTarget().get()) != pc_load_addr) { @@ -284,11 +303,13 @@ ThreadPlanStepRange::GetInstructionsForAddress(lldb::addr_t addr, size_t &range_ ExecutionContext exe_ctx (m_thread.GetProcess()); const char *plugin_name = NULL; const char *flavor = NULL; + const bool prefer_file_cache = true; m_instruction_ranges[i] = Disassembler::DisassembleRange(GetTarget().GetArchitecture(), plugin_name, flavor, exe_ctx, - m_address_ranges[i]); + m_address_ranges[i], + prefer_file_cache); } if (!m_instruction_ranges[i]) @@ -361,7 +382,7 @@ ThreadPlanStepRange::SetNextBranchBreakpoint () { const bool is_internal = true; run_to_address = instructions->GetInstructionAtIndex(branch_index)->GetAddress(); - m_next_branch_bp_sp = GetTarget().CreateBreakpoint(run_to_address, is_internal); + m_next_branch_bp_sp = GetTarget().CreateBreakpoint(run_to_address, is_internal, false); if (m_next_branch_bp_sp) { if (log) |