13d50a545b840956a1f1faf7d973e33a651156041Johnny Chen""" 23d50a545b840956a1f1faf7d973e33a651156041Johnny ChenTest some more expression commands. 33d50a545b840956a1f1faf7d973e33a651156041Johnny Chen""" 43d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 53d50a545b840956a1f1faf7d973e33a651156041Johnny Chenimport os 63d50a545b840956a1f1faf7d973e33a651156041Johnny Chenimport unittest2 73d50a545b840956a1f1faf7d973e33a651156041Johnny Chenimport lldb 83d50a545b840956a1f1faf7d973e33a651156041Johnny Chenimport lldbutil 93d50a545b840956a1f1faf7d973e33a651156041Johnny Chenfrom lldbtest import * 103d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 113d50a545b840956a1f1faf7d973e33a651156041Johnny Chenclass ExprCommands2TestCase(TestBase): 123d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 133d50a545b840956a1f1faf7d973e33a651156041Johnny Chen mydir = os.path.join("expression_command", "test") 143d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 153d50a545b840956a1f1faf7d973e33a651156041Johnny Chen def setUp(self): 163d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # Call super's setUp(). 173d50a545b840956a1f1faf7d973e33a651156041Johnny Chen TestBase.setUp(self) 183d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # Find the line number to break for main.c. 193d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.line = line_number('main.cpp', 203d50a545b840956a1f1faf7d973e33a651156041Johnny Chen '// Please test many expressions while stopped at this line:') 213d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 2267130e42592e68c3055e7ab5b7a368d89a06f05eJohnny Chen @expectedFailurei386 233d50a545b840956a1f1faf7d973e33a651156041Johnny Chen def test_more_expr_commands(self): 243d50a545b840956a1f1faf7d973e33a651156041Johnny Chen """Test some more expression commands.""" 253d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.buildDefault() 263d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 273d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) 283d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 29431d839a33e9a274e705f7a268a1c9de2ffc2da2Jim Ingham lldbutil.run_break_set_by_file_and_line(self, "main.cpp", self.line, num_expected_locations=1,loc_exact=False) 303d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 313d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.runCmd("run", RUN_SUCCEEDED) 323d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 333d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # Does static casting work? 343d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.expect("expression (int*)argv", 353d50a545b840956a1f1faf7d973e33a651156041Johnny Chen startstr = "(int *) $0 = 0x") 363d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # (int *) $0 = 0x00007fff5fbff258 373d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 383d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # Do anonymous symbols work? 393d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.expect("expression ((char**)environ)[0]", 403d50a545b840956a1f1faf7d973e33a651156041Johnny Chen startstr = "(char *) $1 = 0x") 413d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # (char *) $1 = 0x00007fff5fbff298 "Apple_PubSub_Socket_Render=/tmp/launch-7AEsUD/Render" 423d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 433d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # Do return values containing the contents of expression locals work? 443d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.expect("expression int i = 5; i", 453d50a545b840956a1f1faf7d973e33a651156041Johnny Chen startstr = "(int) $2 = 5") 463d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # (int) $2 = 5 473d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.expect("expression $2 + 1", 483d50a545b840956a1f1faf7d973e33a651156041Johnny Chen startstr = "(int) $3 = 6") 493d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # (int) $3 = 6 503d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 513d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # Do return values containing the results of static expressions work? 523d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.expect("expression 20 + 3", 533d50a545b840956a1f1faf7d973e33a651156041Johnny Chen startstr = "(int) $4 = 23") 543d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # (int) $4 = 5 553d50a545b840956a1f1faf7d973e33a651156041Johnny Chen self.expect("expression $4 + 1", 563d50a545b840956a1f1faf7d973e33a651156041Johnny Chen startstr = "(int) $5 = 24") 573d50a545b840956a1f1faf7d973e33a651156041Johnny Chen # (int) $5 = 6 583d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 593d50a545b840956a1f1faf7d973e33a651156041Johnny Chen 603d50a545b840956a1f1faf7d973e33a651156041Johnny Chenif __name__ == '__main__': 613d50a545b840956a1f1faf7d973e33a651156041Johnny Chen import atexit 623d50a545b840956a1f1faf7d973e33a651156041Johnny Chen lldb.SBDebugger.Initialize() 633d50a545b840956a1f1faf7d973e33a651156041Johnny Chen atexit.register(lambda: lldb.SBDebugger.Terminate()) 643d50a545b840956a1f1faf7d973e33a651156041Johnny Chen unittest2.main() 65