[lldb-dev] Bug with ThreadPlanStepRange::InRange, symbol context and target.source-map setting

Ted Woodward via lldb-dev lldb-dev at lists.llvm.org
Fri May 6 11:22:54 PDT 2016


I'm stepping over the first line of a libcxx test (source
https://llvm.org/svn/llvm-project/libcxx/trunk/test/std/thread/thread.condit
ion/thread.condition.condvar/wait.pass.cpp ). The first line has an inlined
function call. I expect lldb to step over the breakpoint, run to the end of
the range that sets up the inlined function call, run through the inlined
function call, then run to the end of the line. Instead, it runs to the
inlined call, then stops.

 

I'm running lldb on Windows, debugging a Hexagon application that was built
on Linux. I'm using the target.source-map setting to let me see source.

 

The problem is in ThreadPlanStepRange::InRange. It checks to see if we're
still on the same line by comparing the filename in the Stepping Plan's line
entry to the filename in the current frame's line entry.
m_addr_context.line_entry.file has been normalized by the value in
target.source-map, but new_context.line_entry.file hasn't, so they're not
the same, even though they should be.

 

        SymbolContext
new_context(frame->GetSymbolContext(eSymbolContextEverything));

        if (m_addr_context.line_entry.IsValid() &&
new_context.line_entry.IsValid())

        {

            if (m_addr_context.line_entry.file ==
new_context.line_entry.file)

            {

 

 

Either both should use target.source-map, or neither should.  How do I run
new_context.line_entry.file through the target.source-map normalization?

 

Ted

 

--

Qualcomm Innovation Center, Inc.

The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a
Linux Foundation Collaborative Project

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20160506/100e6fde/attachment.html>


More information about the lldb-dev mailing list