Right now I'm looking at two (ignoring the debug-info multiplication): TestExprs2.py and TestTopLevelExprs.py TestExprs2 is encountering ambiguity when looking up the "environ" symbol (the dynamic linker contains an extra copy). I think I know how to handle that.
I haven't yet looked at what is the issue with the other test. On 21 December 2017 at 15:11, Davide Italiano <dccitali...@gmail.com> wrote: > What's the number of failures on Linux x86/64 red hat currently? > > Thanks, > > -- > Davide > > On Thu, Dec 21, 2017 at 4:09 PM, Pavel Labath <lab...@google.com> wrote: >> Yeah, purely renaming the variables would be a bit like hiding >> problems under the carpet. But, I think adding the new test makes up >> for that. This way, anyone who wants to fix this issue in the future >> will have a simple test to validate his fix. >> >> On 21 December 2017 at 14:55, Davide Italiano <dccitali...@gmail.com> wrote: >>> Thank you Pavel. >>> I was really nervous about making this change but I agree it's for the best. >>> >>> Thanks, >>> >>> -- >>> Davide >>> >>> On Thu, Dec 21, 2017 at 3:40 PM, Pavel Labath via lldb-commits >>> <lldb-commits@lists.llvm.org> wrote: >>>> Author: labath >>>> Date: Thu Dec 21 06:40:03 2017 >>>> New Revision: 321271 >>>> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=321271&view=rev >>>> Log: >>>> Work around test failures on red-hat linux >>>> >>>> Two tests were failing because the debugger was picking up multiply >>>> defined internal symbols from the system libraries. This is a bug, as >>>> there should be no ambiguity because the tests are defining variables >>>> with should shadow these symbols, but lldb is not smart enough to figure >>>> that out. >>>> >>>> I work around the issue by renaming the variables in these tests, and in >>>> exchange I create a self-contained test which reproduces the issue >>>> without depending on the system libraries. >>>> >>>> This increases the predictability of our test suite. >>>> >>>> Modified: >>>> >>>> lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_9673664/TestExprHelpExamples.py >>>> >>>> lldb/trunk/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py >>>> lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/lambdas/main.cpp >>>> >>>> Modified: >>>> lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_9673664/TestExprHelpExamples.py >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_9673664/TestExprHelpExamples.py?rev=321271&r1=321270&r2=321271&view=diff >>>> ============================================================================== >>>> --- >>>> lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_9673664/TestExprHelpExamples.py >>>> (original) >>>> +++ >>>> lldb/trunk/packages/Python/lldbsuite/test/expression_command/radar_9673664/TestExprHelpExamples.py >>>> Thu Dec 21 06:40:03 2017 >>>> @@ -42,7 +42,7 @@ class Radar9673644TestCase(TestBase): >>>> >>>> # rdar://problem/9673664 lldb expression evaluation problem >>>> >>>> - self.expect('expr char c[] = "foo"; c[0]', >>>> + self.expect('expr char str[] = "foo"; str[0]', >>>> substrs=["'f'"]) >>>> # runCmd: expr char c[] = "foo"; c[0] >>>> # output: (char) $0 = 'f' >>>> >>>> Modified: >>>> lldb/trunk/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py?rev=321271&r1=321270&r2=321271&view=diff >>>> ============================================================================== >>>> --- >>>> lldb/trunk/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py >>>> (original) >>>> +++ >>>> lldb/trunk/packages/Python/lldbsuite/test/lang/c/conflicting-symbol/TestConflictingSymbol.py >>>> Thu Dec 21 06:40:03 2017 >>>> @@ -16,6 +16,13 @@ class TestConflictingSymbols(TestBase): >>>> mydir = TestBase.compute_mydir(__file__) >>>> NO_DEBUG_INFO_TESTCASE = True >>>> >>>> + def setUp(self): >>>> + TestBase.setUp(self) >>>> + >>>> + self.One_line = line_number('One/One.c', '// break here') >>>> + self.Two_line = line_number('Two/Two.c', '// break here') >>>> + self.main_line = line_number('main.c', '// break here') >>>> + >>>> def test_conflicting_symbols(self): >>>> self.build() >>>> exe = os.path.join(os.getcwd(), "a.out") >>>> @@ -27,15 +34,12 @@ class TestConflictingSymbols(TestBase): >>>> environment = self.registerSharedLibrariesWithTarget( >>>> target, ['One', 'Two']) >>>> >>>> - One_line = line_number('One/One.c', '// break here') >>>> - Two_line = line_number('Two/Two.c', '// break here') >>>> - main_line = line_number('main.c', '// break here') >>>> lldbutil.run_break_set_command( >>>> - self, 'breakpoint set -f One.c -l %s' % (One_line)) >>>> + self, 'breakpoint set -f One.c -l %s' % (self.One_line)) >>>> lldbutil.run_break_set_command( >>>> - self, 'breakpoint set -f Two.c -l %s' % (Two_line)) >>>> + self, 'breakpoint set -f Two.c -l %s' % (self.Two_line)) >>>> lldbutil.run_break_set_by_file_and_line( >>>> - self, 'main.c', main_line, num_expected_locations=1, >>>> loc_exact=True) >>>> + self, 'main.c', self.main_line, num_expected_locations=1, >>>> loc_exact=True) >>>> >>>> process = target.LaunchSimple( >>>> None, environment, self.get_process_working_directory()) >>>> @@ -88,3 +92,32 @@ class TestConflictingSymbols(TestBase): >>>> error=True, >>>> substrs=[ >>>> "Multiple internal symbols"]) >>>> + >>>> + @expectedFailureAll(bugnumber="llvm.org/pr35043") >>>> + def test_shadowed(self): >>>> + self.build() >>>> + exe = os.path.join(os.getcwd(), "a.out") >>>> + target = self.dbg.CreateTarget("a.out") >>>> + self.assertTrue(target, VALID_TARGET) >>>> + >>>> + # Register our shared libraries for remote targets so they get >>>> + # automatically uploaded >>>> + environment = self.registerSharedLibrariesWithTarget( >>>> + target, ['One', 'Two']) >>>> + >>>> + lldbutil.run_break_set_by_file_and_line(self, 'main.c', >>>> self.main_line) >>>> + >>>> + process = target.LaunchSimple( >>>> + None, environment, self.get_process_working_directory()) >>>> + self.assertTrue(process, PROCESS_IS_VALID) >>>> + >>>> + # The stop reason of the thread should be breakpoint. >>>> + self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, >>>> + substrs=['stopped', >>>> + 'stop reason = breakpoint']) >>>> + >>>> + # As we are shadowing the conflicting symbol, there should be no >>>> + # ambiguity in this expression. >>>> + self.expect( >>>> + "expr int conflicting_symbol = 474747; conflicting_symbol", >>>> + substrs=[ "474747"]) >>>> >>>> Modified: >>>> lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/lambdas/main.cpp >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/lambdas/main.cpp?rev=321271&r1=321270&r2=321271&view=diff >>>> ============================================================================== >>>> --- lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/lambdas/main.cpp >>>> (original) >>>> +++ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/lambdas/main.cpp >>>> Thu Dec 21 06:40:03 2017 >>>> @@ -11,7 +11,7 @@ >>>> >>>> int main (int argc, char const *argv[]) >>>> { >>>> - printf("Stop here\n"); //% self.runCmd("expression auto $add = [](int >>>> a, int b) { return a + b; }") >>>> + printf("Stop here\n"); //% self.runCmd("expression auto $add = [](int >>>> first, int second) { return first + second; }") >>>> //% self.expect("expression $add(2,3)", >>>> substrs = ['= 5']) >>>> return 0; >>>> } >>>> >>>> >>>> _______________________________________________ >>>> 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