On 11 May 2016 at 10:10, Pavel Labath <lab...@google.com> wrote: > Hi, > > so I think this is our old "compiler generates unpredictable number of > source locations for a line" friend again, which got triggered by a > random code reshuffle. Assuming the test still passes for you after > that, can you prepare a change to remove the "num_expected_locations = > 1" from the relevant lines?
Indeed. I'm able to get the test passing with this ugly workaround: --- a/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py +++ b/packages/Python/lldbsuite/test/functionalities/thread/thread_exit/TestThreadExit.py @@ -31,16 +31,18 @@ class ThreadExitTestCase(TestBase): self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) # This should create a breakpoint with 1 location. + # Note, Clang 3.4.1 on FreeBSD 10 produces debug info with two locations + # for breakpoint 3. Work around that by requiring at least one location. bp1_id = lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.break_1, num_expected_locations=1) bp2_id = lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.break_2, num_expected_locations=1) - bp3_id = lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.break_3, num_expected_locations=1) + bp3_id = lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.break_3, num_expected_locations=-1) bp4_id = lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.break_4, num_expected_locations=1) # The breakpoint list should show 1 locations. self.expect("breakpoint list -f", "Breakpoint location shown correctly", substrs = ["1: file = 'main.cpp', line = %d, exact_match = 0, locations = 1" % self.break_1, "2: file = 'main.cpp', line = %d, exact_match = 0, locations = 1" % self.break_2, - "3: file = 'main.cpp', line = %d, exact_match = 0, locations = 1" % self.break_3, + "3: file = 'main.cpp', line = %d, exact_match = 0, locations = " % self.break_3, "4: file = 'main.cpp', line = %d, exact_match = 0, locations = 1" % self.break_4]) # Run the program. @@ -76,6 +78,10 @@ class ThreadExitTestCase(TestBase): # Run to the fourth breakpoint self.runCmd("continue") + # bp3 may have multiple locations. Continue if we're still stopped there. + if lldbutil.get_one_thread_stopped_at_breakpoint_id(process, bp3_id): + self.runCmd("continue") + stopped_thread = lldbutil.get_one_thread_stopped_at_breakpoint_id(process, bp4_id) self.assertIsNotNone(stopped_thread, "Process is not stopped at breakpoint 4") _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits