199451b44SJordan Rupprecht"""Check that compiler-generated constant values work correctly""" 299451b44SJordan Rupprecht 399451b44SJordan Rupprecht 499451b44SJordan Rupprecht 599451b44SJordan Rupprechtimport lldb 699451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 799451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 899451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 999451b44SJordan Rupprecht 1099451b44SJordan Rupprecht 1199451b44SJordan Rupprechtclass ConstVariableTestCase(TestBase): 1299451b44SJordan Rupprecht 1399451b44SJordan Rupprecht @expectedFailureAll(oslist=["freebsd", "linux"], compiler="icc") 1499451b44SJordan Rupprecht @expectedFailureAll(archs=['mips', 'mipsel', 'mips64', 'mips64el']) 1599451b44SJordan Rupprecht @expectedFailureAll( 1699451b44SJordan Rupprecht oslist=["windows"], 1799451b44SJordan Rupprecht bugnumber="llvm.org/pr24489: Name lookup not working correctly on Windows") 1899451b44SJordan Rupprecht def test_and_run_command(self): 1999451b44SJordan Rupprecht """Test interpreted and JITted expressions on constant values.""" 2099451b44SJordan Rupprecht self.build() 2199451b44SJordan Rupprecht exe = self.getBuildArtifact("a.out") 2299451b44SJordan Rupprecht self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) 2399451b44SJordan Rupprecht 2499451b44SJordan Rupprecht # Break inside the main. 2599451b44SJordan Rupprecht lldbutil.run_break_set_by_symbol( 2699451b44SJordan Rupprecht self, "main", num_expected_locations=1) 2799451b44SJordan Rupprecht 2899451b44SJordan Rupprecht self.runCmd("run", RUN_SUCCEEDED) 2999451b44SJordan Rupprecht 3099451b44SJordan Rupprecht # The stop reason of the thread should be breakpoint. 3199451b44SJordan Rupprecht self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, 3299451b44SJordan Rupprecht substrs=['stopped', 3399451b44SJordan Rupprecht 'stop reason = breakpoint']) 3499451b44SJordan Rupprecht 3599451b44SJordan Rupprecht # The breakpoint should have a hit count of 1. 36*9f0b5f9aSSYNOPSYS\georgiev lldbutil.check_breakpoint(self, bpno = 1, expected_hit_count = 1) 3799451b44SJordan Rupprecht 3899451b44SJordan Rupprecht self.runCmd("next") 3999451b44SJordan Rupprecht self.runCmd("next") 4099451b44SJordan Rupprecht 4199451b44SJordan Rupprecht # Try frame variable. 4299451b44SJordan Rupprecht self.expect("frame variable index", VARIABLES_DISPLAYED_CORRECTLY, 4399451b44SJordan Rupprecht substrs=['(int32_t) index = 512']) 4499451b44SJordan Rupprecht 4599451b44SJordan Rupprecht # Try an interpreted expression. 4699451b44SJordan Rupprecht self.expect("expr (index + 512)", VARIABLES_DISPLAYED_CORRECTLY, 4799451b44SJordan Rupprecht substrs=['1024']) 4899451b44SJordan Rupprecht 4999451b44SJordan Rupprecht # Try a JITted expression. 5099451b44SJordan Rupprecht self.expect( 5199451b44SJordan Rupprecht "expr (int)getpid(); (index - 256)", 5299451b44SJordan Rupprecht VARIABLES_DISPLAYED_CORRECTLY, 5399451b44SJordan Rupprecht substrs=['256']) 5499451b44SJordan Rupprecht 5599451b44SJordan Rupprecht self.runCmd("kill") 56