forked from OSchip/llvm-project
Fixing AddressSanitizer tests (update expectations for current ASan, make it work on OS X 10.10 and older).
llvm-svn: 265400
This commit is contained in:
parent
1d3c43b293
commit
3b275db195
|
@ -47,11 +47,10 @@ class AsanTestCase(TestBase):
|
|||
|
||||
self.runCmd("run")
|
||||
|
||||
# ASan will relaunch the process to insert its library.
|
||||
self.expect("thread list", "Process should be stopped due to exec.",
|
||||
substrs = ['stopped', 'stop reason = '])
|
||||
|
||||
self.runCmd("continue")
|
||||
stop_reason = self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReason()
|
||||
if stop_reason == lldb.eStopReasonExec:
|
||||
# On OS X 10.10 and older, we need to re-exec to enable interceptors.
|
||||
self.runCmd("continue")
|
||||
|
||||
# the stop reason of the thread should be breakpoint.
|
||||
self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
|
||||
|
@ -89,15 +88,12 @@ class AsanTestCase(TestBase):
|
|||
self.assertTrue(history_thread.num_frames >= 2)
|
||||
self.assertEqual(history_thread.frames[1].GetLineEntry().GetFileSpec().GetFilename(), "main.c")
|
||||
self.assertEqual(history_thread.frames[1].GetLineEntry().GetLine(), self.line_malloc)
|
||||
|
||||
# now let's break when an ASan report occurs and try the API then
|
||||
self.runCmd("breakpoint set -n __asan_report_error")
|
||||
|
||||
|
||||
# ASan will break when a report occurs and we'll try the API then
|
||||
self.runCmd("continue")
|
||||
|
||||
# the stop reason of the thread should be breakpoint.
|
||||
self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
|
||||
substrs = ['stopped', 'stop reason = breakpoint'])
|
||||
self.expect("thread list", "Process should be stopped due to ASan report",
|
||||
substrs = ['stopped', 'stop reason = Use of deallocated memory detected'])
|
||||
|
||||
# make sure the 'memory history' command still works even when we're generating a report now
|
||||
self.expect("memory history 'another_pointer'",
|
||||
|
|
|
@ -40,16 +40,10 @@ class AsanTestReportDataCase(TestBase):
|
|||
self.expect("file " + exe, patterns = [ "Current executable set to .*a.out" ])
|
||||
self.runCmd("run")
|
||||
|
||||
# ASan will relaunch the process to insert its library.
|
||||
self.expect("thread list", "Process should be stopped due to exec.",
|
||||
substrs = ['stopped', 'stop reason = '])
|
||||
|
||||
# no extended info when we have no ASan report
|
||||
thread = self.dbg.GetSelectedTarget().process.GetSelectedThread()
|
||||
s = lldb.SBStream()
|
||||
self.assertFalse(thread.GetStopReasonExtendedInfoAsJSON(s))
|
||||
|
||||
self.runCmd("continue")
|
||||
stop_reason = self.dbg.GetSelectedTarget().process.GetSelectedThread().GetStopReason()
|
||||
if stop_reason == lldb.eStopReasonExec:
|
||||
# On OS X 10.10 and older, we need to re-exec to enable interceptors.
|
||||
self.runCmd("continue")
|
||||
|
||||
self.expect("thread list", "Process should be stopped due to ASan report",
|
||||
substrs = ['stopped', 'stop reason = Use of deallocated memory detected'])
|
||||
|
@ -63,7 +57,7 @@ class AsanTestReportDataCase(TestBase):
|
|||
substrs = ["access_size", "access_type", "address", "pc", "description", "heap-use-after-free"])
|
||||
|
||||
output_lines = self.res.GetOutput().split('\n')
|
||||
json_line = output_lines[2]
|
||||
json_line = '\n'.join(output_lines[2:])
|
||||
data = json.loads(json_line)
|
||||
self.assertEqual(data["description"], "heap-use-after-free")
|
||||
self.assertEqual(data["instrumentation_class"], "AddressSanitizer")
|
||||
|
|
Loading…
Reference in New Issue