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 NO_DEBUG_INFO_TESTCASE = True 16 17 def setUp(self): 18 TestBase.setUp(self) 19 self.build() 20 21 def has_exactly_one_image(self, matching, msg=""): 22 self.expect( 23 "image list", 24 "image list should contain at least one image", 25 substrs=['[ 0]']) 26 should_match = not matching 27 self.expect( 28 "image list", msg, matching=should_match, substrs=['[ 1]']) 29 30 31 @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"], 32 bugnumber='llvm.org/pr48372', 33 triple=no_match(".*-android")) 34 def test_dependents_implicit_default_exe(self): 35 """Test default behavior""" 36 exe = self.getBuildArtifact("a.out") 37 self.runCmd("target create " + exe, CURRENT_EXECUTABLE_SET) 38 self.has_exactly_one_image(False) 39 40 @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"], 41 bugnumber='llvm.org/pr48372', 42 triple=no_match(".*-android")) 43 def test_dependents_explicit_default_exe(self): 44 """Test default behavior""" 45 exe = self.getBuildArtifact("a.out") 46 self.runCmd("target create -ddefault " + exe, CURRENT_EXECUTABLE_SET) 47 self.has_exactly_one_image(False) 48 49 def test_dependents_explicit_true_exe(self): 50 """Test default behavior""" 51 exe = self.getBuildArtifact("a.out") 52 self.runCmd("target create -dtrue " + exe, CURRENT_EXECUTABLE_SET) 53 self.has_exactly_one_image(True) 54 55 @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"], 56 bugnumber='llvm.org/pr48372', 57 triple=no_match(".*-android")) 58 def test_dependents_explicit_false_exe(self): 59 """Test default behavior""" 60 exe = self.getBuildArtifact("a.out") 61 self.runCmd("target create -dfalse " + exe, CURRENT_EXECUTABLE_SET) 62 self.has_exactly_one_image(False) 63 64 def test_dependents_implicit_false_exe(self): 65 """Test default behavior""" 66 exe = self.getBuildArtifact("a.out") 67 self.runCmd("target create -d " + exe, CURRENT_EXECUTABLE_SET) 68 self.has_exactly_one_image(True) 69 70 @expectedFailureAndroid # android will return mutiple images 71 def test_dependents_implicit_default_lib(self): 72 ctx = self.platformContext 73 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 74 lib = self.getBuildArtifact(dylibName) 75 self.runCmd("target create " + lib, CURRENT_EXECUTABLE_SET) 76 self.has_exactly_one_image(True) 77 78 def test_dependents_explicit_default_lib(self): 79 ctx = self.platformContext 80 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 81 lib = self.getBuildArtifact(dylibName) 82 self.runCmd("target create -ddefault " + lib, CURRENT_EXECUTABLE_SET) 83 self.has_exactly_one_image(True) 84 85 def test_dependents_explicit_true_lib(self): 86 ctx = self.platformContext 87 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 88 lib = self.getBuildArtifact(dylibName) 89 self.runCmd("target create -dtrue " + lib, CURRENT_EXECUTABLE_SET) 90 self.has_exactly_one_image(True) 91 92 @expectedFailureAll(oslist=["freebsd", "linux", "netbsd"], 93 bugnumber='llvm.org/pr48372', 94 triple=no_match(".*-android")) 95 def test_dependents_explicit_false_lib(self): 96 ctx = self.platformContext 97 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 98 lib = self.getBuildArtifact(dylibName) 99 self.runCmd("target create -dfalse " + lib, CURRENT_EXECUTABLE_SET) 100 self.has_exactly_one_image(False) 101 102 def test_dependents_implicit_false_lib(self): 103 ctx = self.platformContext 104 dylibName = ctx.shlib_prefix + 'load_a.' + ctx.shlib_extension 105 lib = self.getBuildArtifact(dylibName) 106 self.runCmd("target create -d " + lib, CURRENT_EXECUTABLE_SET) 107 self.has_exactly_one_image(True) 108