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 13@skipIfWindows # Windows deals differently with shared libs. 14class TargetDependentsTestCase(TestBase): 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 ) 27 should_match = not matching 28 self.expect("image list", msg, matching=should_match, substrs=["[ 1]"]) 29 30 @expectedFailureAll( 31 oslist=["freebsd", "linux", "netbsd"], 32 bugnumber="llvm.org/pr48372", 33 triple=no_match(".*-android"), 34 ) 35 def test_dependents_implicit_default_exe(self): 36 """Test default behavior""" 37 exe = self.getBuildArtifact("a.out") 38 self.runCmd("target create " + exe, CURRENT_EXECUTABLE_SET) 39 self.has_exactly_one_image(False) 40 41 @expectedFailureAll( 42 oslist=["freebsd", "linux", "netbsd"], 43 bugnumber="llvm.org/pr48372", 44 triple=no_match(".*-android"), 45 ) 46 def test_dependents_explicit_default_exe(self): 47 """Test default behavior""" 48 exe = self.getBuildArtifact("a.out") 49 self.runCmd("target create -ddefault " + exe, CURRENT_EXECUTABLE_SET) 50 self.has_exactly_one_image(False) 51 52 def test_dependents_explicit_true_exe(self): 53 """Test default behavior""" 54 exe = self.getBuildArtifact("a.out") 55 self.runCmd("target create -dtrue " + exe, CURRENT_EXECUTABLE_SET) 56 self.has_exactly_one_image(True) 57 58 @expectedFailureAll( 59 oslist=["freebsd", "linux", "netbsd"], 60 bugnumber="llvm.org/pr48372", 61 triple=no_match(".*-android"), 62 ) 63 def test_dependents_explicit_false_exe(self): 64 """Test default behavior""" 65 exe = self.getBuildArtifact("a.out") 66 self.runCmd("target create -dfalse " + exe, CURRENT_EXECUTABLE_SET) 67 self.has_exactly_one_image(False) 68 69 def test_dependents_implicit_false_exe(self): 70 """Test default behavior""" 71 exe = self.getBuildArtifact("a.out") 72 self.runCmd("target create -d " + exe, CURRENT_EXECUTABLE_SET) 73 self.has_exactly_one_image(True) 74 75 @expectedFailureAndroid # android will return mutiple images 76 def test_dependents_implicit_default_lib(self): 77 ctx = self.platformContext 78 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension 79 lib = self.getBuildArtifact(dylibName) 80 self.runCmd("target create " + lib, CURRENT_EXECUTABLE_SET) 81 self.has_exactly_one_image(True) 82 83 def test_dependents_explicit_default_lib(self): 84 ctx = self.platformContext 85 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension 86 lib = self.getBuildArtifact(dylibName) 87 self.runCmd("target create -ddefault " + lib, CURRENT_EXECUTABLE_SET) 88 self.has_exactly_one_image(True) 89 90 def test_dependents_explicit_true_lib(self): 91 ctx = self.platformContext 92 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension 93 lib = self.getBuildArtifact(dylibName) 94 self.runCmd("target create -dtrue " + lib, CURRENT_EXECUTABLE_SET) 95 self.has_exactly_one_image(True) 96 97 @expectedFailureAll( 98 oslist=["freebsd", "linux", "netbsd"], 99 bugnumber="llvm.org/pr48372", 100 triple=no_match(".*-android"), 101 ) 102 def test_dependents_explicit_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 -dfalse " + lib, CURRENT_EXECUTABLE_SET) 107 self.has_exactly_one_image(False) 108 109 def test_dependents_implicit_false_lib(self): 110 ctx = self.platformContext 111 dylibName = ctx.shlib_prefix + "load_a." + ctx.shlib_extension 112 lib = self.getBuildArtifact(dylibName) 113 self.runCmd("target create -d " + lib, CURRENT_EXECUTABLE_SET) 114 self.has_exactly_one_image(True) 115