diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/python_api/symbol-context/two-files')
4 files changed, 78 insertions, 22 deletions
| diff --git a/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py b/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py index 1d8d70114573..429e9c4da34a 100644 --- a/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py +++ b/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/TestSymbolContextTwoFiles.py @@ -11,6 +11,7 @@ from lldbsuite.test.decorators import *  from lldbsuite.test.lldbtest import *  from lldbsuite.test import lldbutil +  class SymbolContextTwoFilesTestCase(TestBase):      mydir = TestBase.compute_mydir(__file__) @@ -30,7 +31,53 @@ class SymbolContextTwoFilesTestCase(TestBase):          for symbol_name in ["struct1::f()", "struct2::f()"]:              sc_list = module.FindFunctions(symbol_name, lldb.eSymbolTypeCode)              self.assertTrue(1, sc_list.GetSize()) -            symbol_address = sc_list.GetContextAtIndex(0).GetSymbol().GetStartAddress() +            symbol_address = sc_list.GetContextAtIndex( +                0).GetSymbol().GetStartAddress()              self.assertTrue(symbol_address.IsValid()) -            sc_by_address = module.ResolveSymbolContextForAddress(symbol_address, lldb.eSymbolContextFunction) -            self.assertEqual(symbol_name, sc_by_address.GetFunction().GetName()) +            sc_by_address = module.ResolveSymbolContextForAddress( +                symbol_address, lldb.eSymbolContextFunction) +            self.assertEqual(symbol_name, +                             sc_by_address.GetFunction().GetName()) + +    @add_test_categories(['pyapi']) +    def test_ranges_in_multiple_compile_unit(self): +        """This test verifies that we correctly handle the case when multiple +        compile unit contains DW_AT_ranges and DW_AT_ranges_base attributes.""" +        self.build() +        exe = os.path.join(os.getcwd(), "a.out") + +        target = self.dbg.CreateTarget(exe) +        self.assertTrue(target, VALID_TARGET) + +        source1 = "file1.cpp" +        line1 = line_number(source1, '// Break1') +        breakpoint1 = target.BreakpointCreateByLocation(source1, line1) +        self.assertIsNotNone(breakpoint1) +        self.assertTrue(breakpoint1.IsValid()) + +        source2 = "file2.cpp" +        line2 = line_number(source2, '// Break2') +        breakpoint2 = target.BreakpointCreateByLocation(source2, line2) +        self.assertIsNotNone(breakpoint2) +        self.assertTrue(breakpoint2.IsValid()) + +        process = target.LaunchSimple(None, None, self.get_process_working_directory()) +        self.assertIsNotNone(process, PROCESS_IS_VALID) + +        threads = lldbutil.get_threads_stopped_at_breakpoint( +            process, breakpoint2) +        self.assertEqual(len(threads), 1) +        frame = threads[0].GetFrameAtIndex(0) +        value = frame.FindVariable("x") +        self.assertTrue(value.IsValid()) + +        process.Continue() + +        threads = lldbutil.get_threads_stopped_at_breakpoint( +            process, breakpoint1) +        self.assertEqual(len(threads), 1) +        frame = threads[0].GetFrameAtIndex(0) +        value = frame.FindVariable("x") +        self.assertTrue(value.IsValid()) + +        process.Continue() diff --git a/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/decls.h b/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/decls.h index 0cb685622cd0..7c8045842062 100644 --- a/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/decls.h +++ b/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/decls.h @@ -1,11 +1,11 @@ -struct struct1 -{ -    static void -    f(); +struct struct1 { +  ~struct1(); +  static void f();  }; -struct struct2 -{ -    static void -    f(); +struct struct2 { +  ~struct2(); +  static void f();  }; + +int g(); diff --git a/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file1.cpp b/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file1.cpp index 16c8ce7d9488..327d0fb7718f 100644 --- a/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file1.cpp +++ b/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file1.cpp @@ -1,13 +1,21 @@  #include "decls.h" -void -struct1::f() -{ +int g() { +  return 1;  } -int main() -{ -    struct1::f(); -    struct2::f(); -    return 0; +struct1::~struct1() { +  int x = g(); // Break1 +} + +void struct1::f() {} + +int main() { +  struct1::f(); +  struct2::f(); + +  struct1 s1; +  struct2 s2; + +  return 0;  } diff --git a/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file2.cpp b/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file2.cpp index 3bd1aaf95a73..109e01572ed2 100644 --- a/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file2.cpp +++ b/packages/Python/lldbsuite/test/python_api/symbol-context/two-files/file2.cpp @@ -1,6 +1,7 @@  #include "decls.h" -void -struct2::f() -{ +struct2::~struct2() { +  int x = g(); // Break2  } + +void struct2::f() {} | 
