diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/asan')
| -rw-r--r-- | packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py | 33 | ||||
| -rw-r--r-- | packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py | 24 | 
2 files changed, 24 insertions, 33 deletions
diff --git a/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py b/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py index e92b967d8adfd..6416bccc483d6 100644 --- a/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py +++ b/packages/Python/lldbsuite/test/functionalities/asan/TestMemoryHistory.py @@ -8,18 +8,19 @@ from __future__ import print_function  import os, time  import lldb +from lldbsuite.test.decorators import *  from lldbsuite.test.lldbtest import * -import lldbsuite.test.lldbutil as lldbutil +from lldbsuite.test import lldbplatform +from lldbsuite.test import lldbutil  class AsanTestCase(TestBase):      mydir = TestBase.compute_mydir(__file__) -    @expectedFailureLinux # non-core functionality, need to reenable and fix later (DES 2014.11.07) +    @expectedFailureAll(oslist=["linux"], bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")      @skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default      @skipIfRemote      @skipUnlessCompilerRt -    @expectedFailureDarwin      def test (self):          self.build ()          self.asan_tests () @@ -45,11 +46,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, @@ -62,8 +62,8 @@ class AsanTestCase(TestBase):          # test the 'memory history' command          self.expect("memory history 'pointer'",              substrs = [ -                'Memory allocated at', 'a.out`f1', 'main.c:%d' % self.line_malloc, -                'Memory deallocated at', 'a.out`f2', 'main.c:%d' % self.line_free]) +                'Memory allocated by Thread', 'a.out`f1', 'main.c:%d' % self.line_malloc, +                'Memory deallocated by Thread', 'a.out`f2', 'main.c:%d' % self.line_free])          # do the same using SB API          process = self.dbg.GetSelectedTarget().process @@ -87,17 +87,14 @@ 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'",              substrs = [ -                'Memory allocated at', 'a.out`f1', 'main.c:%d' % self.line_malloc2]) +                'Memory allocated by Thread', 'a.out`f1', 'main.c:%d' % self.line_malloc2]) diff --git a/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py b/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py index 4ef5878951961..b02732ddeddf5 100644 --- a/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py +++ b/packages/Python/lldbsuite/test/functionalities/asan/TestReportData.py @@ -7,20 +7,20 @@ from __future__ import print_function  import os, time +import json  import lldb +from lldbsuite.test.decorators import *  from lldbsuite.test.lldbtest import * -import lldbsuite.test.lldbutil as lldbutil -import json +from lldbsuite.test import lldbutil  class AsanTestReportDataCase(TestBase):      mydir = TestBase.compute_mydir(__file__) -    @expectedFailureLinux # non-core functionality, need to reenable and fix later (DES 2014.11.07) +    @expectedFailureAll(oslist=["linux"], bugnumber="non-core functionality, need to reenable and fix later (DES 2014.11.07)")      @skipIfFreeBSD # llvm.org/pr21136 runtimes not yet available by default      @skipIfRemote      @skipUnlessCompilerRt -    @expectedFailureDarwin      def test(self):          self.build ()          self.asan_tests () @@ -39,16 +39,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']) @@ -62,7 +56,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")  | 
