1""" 2Test that hitting a UBSan issue while running user expression doesn't break the evaluation. 3""" 4 5import lldb 6from lldbsuite.test.lldbtest import * 7from lldbsuite.test.decorators import * 8import lldbsuite.test.lldbutil as lldbutil 9 10 11class UbsanUserExpressionTestCase(TestBase): 12 13 @skipUnlessUndefinedBehaviorSanitizer 14 def test(self): 15 self.build() 16 self.ubsan_tests() 17 18 def setUp(self): 19 # Call super's setUp(). 20 TestBase.setUp(self) 21 self.line_breakpoint = line_number('main.c', '// breakpoint line') 22 23 def ubsan_tests(self): 24 # Load the test 25 exe = self.getBuildArtifact("a.out") 26 target = self.dbg.CreateTarget(exe) 27 self.assertTrue(target, VALID_TARGET) 28 self.registerSanitizerLibrariesWithTarget(target) 29 30 self.runCmd("breakpoint set -f main.c -l %d" % self.line_breakpoint) 31 32 self.runCmd("run") 33 34 process = self.dbg.GetSelectedTarget().process 35 thread = process.GetSelectedThread() 36 frame = thread.GetSelectedFrame() 37 38 self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, 39 substrs=['stopped', 'stop reason = breakpoint']) 40 41 self.expect("p foo()", substrs=["(int) $0 = 42"]) 42 43 self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, 44 substrs=['stopped', 'stop reason = breakpoint']) 45