Is the line they stepped to - instead of the expected line - always line 0?
Jim > On Nov 12, 2015, at 3:52 PM, Zachary Turner <ztur...@google.com> wrote: > > Hi Jim, > > This breaks about 12 tests on Windows. The patch looks simple, but this > isn't really my area, is there anything I can give you to help diagnose what > might be wrong? The following tests fail: > > FAIL: LLDB (suite) :: Test-rdar-9974002.py (Windows zturner-win81 8 6.2.9200 > AMD64 Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestDataFormatterHexCaps.py (Windows zturner-win81 8 > 6.2.9200 AMD64 Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestDataFormatterNamedSummaries.py (Windows > zturner-win81 8 6.2.9200 AMD64 Intel64 Family 6 Model 45 Stepping 7, > GenuineIntel) > FAIL: LLDB (suite) :: TestDataFormatterPythonSynth.py (Windows zturner-win81 > 8 6.2.9200 AMD64 Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestDataFormatterSynth.py (Windows zturner-win81 8 > 6.2.9200 AMD64 Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestDiamond.py (Windows zturner-win81 8 6.2.9200 AMD64 > Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestFormatPropagation.py (Windows zturner-win81 8 > 6.2.9200 AMD64 Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestFrames.py (Windows zturner-win81 8 6.2.9200 AMD64 > Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestInlineStepping.py (Windows zturner-win81 8 6.2.9200 > AMD64 Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestSBData.py (Windows zturner-win81 8 6.2.9200 AMD64 > Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestStepNoDebug.py (Windows zturner-win81 8 6.2.9200 > AMD64 Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > FAIL: LLDB (suite) :: TestThreadJump.py (Windows zturner-win81 8 6.2.9200 > AMD64 Intel64 Family 6 Model 45 Stepping 7, GenuineIntel) > > And here's the error I get from one of the failing tests, although I don't > know how much insight it provides. > > Traceback (most recent call last): > File "D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\lldbtest.py", > line 536, in wrapper > return func(self, *args, **kwargs) > File "D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\lldbtest.py", > line 2228, in dwarf_test_method > return attrvalue(self) > File "D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\lldbtest.py", > line 608, in wrapper > func(*args, **kwargs) > File > "D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\functionalities\step-avoids-no-debug\TestStepNoDebug.py", > line 41, in test_step_in_with_python > self.do_step_in_past_nodebug() > File > "D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\functionalities\step-avoids-no-debug\TestStepNoDebug.py", > line 105, in do_step_in_past_nodebug > self.hit_correct_line ("intermediate_return_value = > called_from_nodebug_actual(some_value)") > File > "D:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\functionalities\step-avoids-no-debug\TestStepNoDebug.py", > line 57, in hit_correct_line > self.assertTrue (cur_line == target_line, "Stepped to line %d instead of > expected %d with pattern '%s'."%(cur_line, target_line, pattern)) > AssertionError: False is not True : Stepped to line 0 instead of expected 19 > with pattern 'intermediate_return_value = > called_from_nodebug_actual(some_value)'. > Config=i686-d:\src\llvmbuild\ninja_release\bin\clang.exe > Session info generated @ Thu Nov 12 15:44:43 2015 > To rerun this test, issue the following command from the 'test' directory: > > If it's not obvious what the problem is, can we revert this until we figure > it out and then reland it? > > On Thu, Nov 12, 2015 at 2:34 PM Jim Ingham via lldb-commits > <lldb-commits@lists.llvm.org> wrote: > Author: jingham > Date: Thu Nov 12 16:32:09 2015 > New Revision: 252963 > > URL: http://llvm.org/viewvc/llvm-project?rev=252963&view=rev > Log: > Another little stepping optimization: if any of the source step commands are > running through a range > of addresses, and the range has no branches, instead of running to the last > instruction and > single-stepping over that, run to the first instruction after the end of the > range. If there > are no branches in the current range, then the bytes right after it have to > be in the current > function, and have to be instructions not data in code, so this is safe. And > it cuts down one > extra stepi per source range step. > > Incidentally, this also works around a bug in the llvm Intel assembler where > it treats the "rep" > prefix as a separate instruction from the repeated instruction. If that were > at the end of a > line range, then we would put a trap in place of the repeated instruction, > which is undefined > behavior. Current processors just ignore the repetition in this case, which > changes program behavior. > Since there would never be a line range break after the rep prefix, always > doing the range stepping > to the beginning of the new range avoids this problem. > > <rdar://problem/23461686> > > Modified: > lldb/trunk/source/Target/ThreadPlanStepRange.cpp > > Modified: lldb/trunk/source/Target/ThreadPlanStepRange.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/ThreadPlanStepRange.cpp?rev=252963&r1=252962&r2=252963&view=diff > ============================================================================== > --- lldb/trunk/source/Target/ThreadPlanStepRange.cpp (original) > +++ lldb/trunk/source/Target/ThreadPlanStepRange.cpp Thu Nov 12 16:32:09 2015 > @@ -390,12 +390,19 @@ ThreadPlanStepRange::SetNextBranchBreakp > if (branch_index == UINT32_MAX) > { > branch_index = instructions->GetSize() - 1; > + InstructionSP last_inst = > instructions->GetInstructionAtIndex(branch_index); > + size_t last_inst_size = last_inst->GetOpcode().GetByteSize(); > + run_to_address = last_inst->GetAddress(); > + run_to_address.Slide(last_inst_size); > + } > + else if (branch_index - pc_index > 1) > + { > + run_to_address = > instructions->GetInstructionAtIndex(branch_index)->GetAddress(); > } > > - if (branch_index - pc_index > 1) > + if (run_to_address.IsValid()) > { > 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, false); > if (m_next_branch_bp_sp) > { > > > _______________________________________________ > lldb-commits mailing list > lldb-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits