1""" 2Test that loading of dependents works correctly for all the potential 3combinations. 4""" 5 6 7import lldb 8from lldbsuite.test.decorators import * 9from lldbsuite.test.lldbtest import * 10from lldbsuite.test import lldbutil 11 12@skipIfWindows # Windows deals differently with shared libs. 13class TargetDependentsTestCase(TestBase): 14 15 mydir = TestBase.compute_mydir(__file__) 16 17 NO_DEBUG_INFO_TESTCASE = True 18 19 def setUp(self): 20 TestBase.setUp(self) 21 self.build() 22 23 def has_exactly_one_image(self, matching, msg=""): 24 self.expect( 25 "image list", 26 "image list should contain at least one image", 27 substrs=['[ 0]']) 28 should_match = not matching 29 self.expect( 30 "image list", msg, matching=should_match, substrs=['[ 1]']) 31 32 33 @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"], 34 bugnumber='llvm.org/pr48372', 35 triple=no_match(".*-android")) 36 def test_dependents_implicit_default_exe(self): 37 """Test default behavior""" 38 exe = self.getBuildArtifact("a.out") 39 self.runCmd("target create " + exe, CURRENT_EXECUTABLE_SET) 40 self.has_exactly_one_image(False) 41 42 @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"], 43 bugnumber='llvm.org/pr48372', 44 triple=no_match(".*-android")) 45 def test_dependents_explicit_default_exe(self): 46 """Test default behavior""" 47 exe = self.getBuildArtifact("a.out") 48 self.runCmd("target create -ddefault " + exe, CURRENT_EXECUTABLE_SET) 49 self.has_exactly_one_image(False) 50 51 def test_dependents_explicit_true_exe(self): 52 """Test default behavior""" 53 exe = self.getBuildArtifact("a.out") 54 self.runCmd("target create -dtrue " + exe, CURRENT_EXECUTABLE_SET) 55 self.has_exactly_one_image(True) 56 57 @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"], 58 bugnumber='llvm.org/pr48372', 59 triple=no_match(".*-android")) 60 def test_dependents_explicit_false_exe(self): 61 """Test default behavior""" 62 exe = self.getBuildArtifact("a.out") 63 self.runCmd("target create -dfalse " + exe, CURRENT_EXECUTABLE_SET) 64 self.has_exactly_one_image(False) 65 66 def test_dependents_implicit_false_exe(self): 67 """Test default behavior""" 68 exe = self.getBuildArtifact("a.out") 69 self.runCmd("target create -d " + exe, CURRENT_EXECUTABLE_SET) 70 self.has_exactly_one_image(True) 71 72 @expectedFailureAndroid # android will return mutiple images 73 def test_dependents_implicit_default_lib(self): 74 ctx = self.platformContext 75 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 76 lib = self.getBuildArtifact(dylibName) 77 self.runCmd("target create " + lib, CURRENT_EXECUTABLE_SET) 78 self.has_exactly_one_image(True) 79 80 def test_dependents_explicit_default_lib(self): 81 ctx = self.platformContext 82 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 83 lib = self.getBuildArtifact(dylibName) 84 self.runCmd("target create -ddefault " + lib, CURRENT_EXECUTABLE_SET) 85 self.has_exactly_one_image(True) 86 87 def test_dependents_explicit_true_lib(self): 88 ctx = self.platformContext 89 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 90 lib = self.getBuildArtifact(dylibName) 91 self.runCmd("target create -dtrue " + lib, CURRENT_EXECUTABLE_SET) 92 self.has_exactly_one_image(True) 93 94 @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"], 95 bugnumber='llvm.org/pr48372', 96 triple=no_match(".*-android")) 97 def test_dependents_explicit_false_lib(self): 98 ctx = self.platformContext 99 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 100 lib = self.getBuildArtifact(dylibName) 101 self.runCmd("target create -dfalse " + lib, CURRENT_EXECUTABLE_SET) 102 self.has_exactly_one_image(False) 103 104 def test_dependents_implicit_false_lib(self): 105 ctx = self.platformContext 106 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 107 lib = self.getBuildArtifact(dylibName) 108 self.runCmd("target create -d " + lib, CURRENT_EXECUTABLE_SET) 109 self.has_exactly_one_image(True) 110